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.
Files changed (281) hide show
  1. package/LICENSE +0 -0
  2. package/README.MD +238 -238
  3. package/lib/adapters.d.ts +7 -0
  4. package/lib/adapters.js +49 -0
  5. package/lib/antv2/adapter-factory.d.ts +14 -0
  6. package/lib/antv2/adapter-factory.js +65 -0
  7. package/lib/antv2/adapter.d.ts +54 -0
  8. package/lib/antv2/adapter.js +291 -0
  9. package/lib/antv2/ant-interface.d.ts +35 -0
  10. package/lib/antv2/ant-interface.js +285 -0
  11. package/lib/antv2/base/adapter.d.ts +0 -0
  12. package/lib/antv2/base/adapter.js +0 -0
  13. package/lib/antv2/base/ant-interface.d.ts +35 -0
  14. package/lib/antv2/base/ant-interface.js +285 -0
  15. package/lib/antv2/base/binding.d.ts +0 -0
  16. package/lib/antv2/base/binding.js +0 -0
  17. package/lib/antv2/base/interface.d.ts +0 -0
  18. package/lib/antv2/base/interface.js +0 -0
  19. package/lib/antv2/binding.d.ts +13 -0
  20. package/lib/antv2/binding.js +27 -0
  21. package/lib/antv2/cad/adapter.d.ts +0 -0
  22. package/lib/antv2/cad/adapter.js +0 -0
  23. package/lib/antv2/cad/index.d.ts +0 -0
  24. package/lib/antv2/cad/index.js +0 -0
  25. package/lib/antv2/consts.d.ts +0 -0
  26. package/lib/antv2/consts.js +0 -0
  27. package/lib/antv2/factories/adapter-factory.d.ts +0 -0
  28. package/lib/antv2/factories/adapter-factory.js +0 -0
  29. package/lib/antv2/factories/sensor-factory.d.ts +0 -0
  30. package/lib/antv2/factories/sensor-factory.js +0 -0
  31. package/lib/antv2/fe/adapter.d.ts +0 -0
  32. package/lib/antv2/fe/adapter.js +0 -0
  33. package/lib/antv2/fe/index.d.ts +0 -0
  34. package/lib/antv2/fe/index.js +0 -0
  35. package/lib/antv2/hr/adapter.d.ts +0 -0
  36. package/lib/antv2/hr/adapter.js +0 -0
  37. package/lib/antv2/hr/index.d.ts +0 -0
  38. package/lib/antv2/hr/index.js +0 -0
  39. package/lib/antv2/hr copy/adapter.d.ts +11 -0
  40. package/lib/antv2/hr copy/adapter.js +30 -0
  41. package/lib/antv2/hr copy/index.d.ts +2 -0
  42. package/lib/antv2/hr copy/index.js +7 -0
  43. package/lib/antv2/index.d.ts +0 -0
  44. package/lib/antv2/index.js +0 -0
  45. package/lib/antv2/pwr/adapter.d.ts +0 -0
  46. package/lib/antv2/pwr/adapter.js +0 -0
  47. package/lib/antv2/pwr/index.d.ts +0 -0
  48. package/lib/antv2/pwr/index.js +0 -0
  49. package/lib/antv2/sensor-factory.d.ts +5 -0
  50. package/lib/antv2/sensor-factory.js +20 -0
  51. package/lib/antv2/types.d.ts +0 -0
  52. package/lib/antv2/types.js +0 -0
  53. package/lib/antv2/utils.d.ts +0 -0
  54. package/lib/antv2/utils.js +0 -0
  55. package/lib/base/adpater.d.ts +0 -0
  56. package/lib/base/adpater.js +2 -1
  57. package/lib/base/consts.d.ts +0 -0
  58. package/lib/base/consts.js +0 -0
  59. package/lib/ble/adapter-factory.d.ts +0 -0
  60. package/lib/ble/adapter-factory.js +0 -0
  61. package/lib/ble/base/adapter.d.ts +0 -0
  62. package/lib/ble/base/adapter.js +0 -0
  63. package/lib/ble/base/comms-utils.d.ts +0 -0
  64. package/lib/ble/base/comms-utils.js +0 -0
  65. package/lib/ble/base/comms.d.ts +0 -0
  66. package/lib/ble/base/comms.js +0 -0
  67. package/lib/ble/base/types.d.ts +0 -0
  68. package/lib/ble/base/types.js +0 -0
  69. package/lib/ble/bindings/index.d.ts +0 -0
  70. package/lib/ble/bindings/index.js +0 -0
  71. package/lib/ble/bindings/linux.d.ts +0 -0
  72. package/lib/ble/bindings/linux.js +0 -0
  73. package/lib/ble/bindings/mock.d.ts +0 -0
  74. package/lib/ble/bindings/mock.js +0 -0
  75. package/lib/ble/bindings/types.d.ts +0 -0
  76. package/lib/ble/bindings/types.js +0 -0
  77. package/lib/ble/ble-interface.d.ts +0 -0
  78. package/lib/ble/ble-interface.js +0 -0
  79. package/lib/ble/ble-peripheral.d.ts +0 -0
  80. package/lib/ble/ble-peripheral.js +0 -0
  81. package/lib/ble/consts.d.ts +0 -0
  82. package/lib/ble/consts.js +0 -0
  83. package/lib/ble/cp/adapter.d.ts +0 -0
  84. package/lib/ble/cp/adapter.js +0 -0
  85. package/lib/ble/cp/comm.d.ts +0 -0
  86. package/lib/ble/cp/comm.js +0 -0
  87. package/lib/ble/cp/index.d.ts +0 -0
  88. package/lib/ble/cp/index.js +0 -0
  89. package/lib/ble/cp/types.d.ts +0 -0
  90. package/lib/ble/cp/types.js +0 -0
  91. package/lib/ble/elite/adapter.d.ts +0 -0
  92. package/lib/ble/elite/adapter.js +0 -0
  93. package/lib/ble/elite/comms.d.ts +0 -0
  94. package/lib/ble/elite/comms.js +0 -0
  95. package/lib/ble/elite/index.d.ts +0 -0
  96. package/lib/ble/elite/index.js +0 -0
  97. package/lib/ble/fm/adapter.d.ts +0 -0
  98. package/lib/ble/fm/adapter.js +0 -0
  99. package/lib/ble/fm/comms.d.ts +0 -0
  100. package/lib/ble/fm/comms.js +0 -0
  101. package/lib/ble/fm/consts.d.ts +0 -0
  102. package/lib/ble/fm/consts.js +0 -0
  103. package/lib/ble/fm/index.d.ts +0 -0
  104. package/lib/ble/fm/index.js +0 -0
  105. package/lib/ble/fm/types.d.ts +0 -0
  106. package/lib/ble/fm/types.js +0 -0
  107. package/lib/ble/hr/adapter.d.ts +0 -0
  108. package/lib/ble/hr/adapter.js +0 -0
  109. package/lib/ble/hr/comm.d.ts +0 -0
  110. package/lib/ble/hr/comm.js +0 -0
  111. package/lib/ble/hr/index.d.ts +0 -0
  112. package/lib/ble/hr/index.js +0 -0
  113. package/lib/ble/hr/mock.d.ts +0 -0
  114. package/lib/ble/hr/mock.js +0 -0
  115. package/lib/ble/hr/types.d.ts +0 -0
  116. package/lib/ble/hr/types.js +0 -0
  117. package/lib/ble/index.d.ts +0 -0
  118. package/lib/ble/index.js +0 -0
  119. package/lib/ble/peripheral-cache.d.ts +0 -0
  120. package/lib/ble/peripheral-cache.js +0 -0
  121. package/lib/ble/tacx/adapter.d.ts +0 -0
  122. package/lib/ble/tacx/adapter.js +0 -0
  123. package/lib/ble/tacx/comms.d.ts +0 -0
  124. package/lib/ble/tacx/comms.js +0 -0
  125. package/lib/ble/tacx/index.d.ts +0 -0
  126. package/lib/ble/tacx/index.js +0 -0
  127. package/lib/ble/tacx/types.d.ts +0 -0
  128. package/lib/ble/tacx/types.js +0 -0
  129. package/lib/ble/types.d.ts +0 -0
  130. package/lib/ble/types.js +0 -0
  131. package/lib/ble/utils.d.ts +0 -0
  132. package/lib/ble/utils.js +0 -0
  133. package/lib/ble/wahoo/adapter.d.ts +0 -0
  134. package/lib/ble/wahoo/adapter.js +0 -0
  135. package/lib/ble/wahoo/comms.d.ts +0 -0
  136. package/lib/ble/wahoo/comms.js +0 -0
  137. package/lib/ble/wahoo/index.d.ts +0 -0
  138. package/lib/ble/wahoo/index.js +0 -0
  139. package/lib/ble/wahoo/types.d.ts +0 -0
  140. package/lib/ble/wahoo/types.js +0 -0
  141. package/lib/factories/adapters.d.ts +0 -0
  142. package/lib/factories/adapters.js +0 -0
  143. package/lib/factories/index.d.ts +0 -0
  144. package/lib/factories/index.js +0 -0
  145. package/lib/factories/interfaces.d.ts +0 -0
  146. package/lib/factories/interfaces.js +0 -0
  147. package/lib/index.d.ts +0 -0
  148. package/lib/index.js +0 -0
  149. package/lib/interfaces.d.ts +7 -0
  150. package/lib/interfaces.js +27 -0
  151. package/lib/modes/ant-fe-adv-st-mode.d.ts +0 -0
  152. package/lib/modes/ant-fe-adv-st-mode.js +0 -0
  153. package/lib/modes/antble-erg.d.ts +0 -0
  154. package/lib/modes/antble-erg.js +0 -0
  155. package/lib/modes/antble-smarttrainer.d.ts +0 -0
  156. package/lib/modes/antble-smarttrainer.js +0 -0
  157. package/lib/modes/base.d.ts +0 -0
  158. package/lib/modes/base.js +0 -0
  159. package/lib/modes/daum-classic-standard.d.ts +0 -0
  160. package/lib/modes/daum-classic-standard.js +0 -0
  161. package/lib/modes/daum-erg.d.ts +0 -0
  162. package/lib/modes/daum-erg.js +0 -0
  163. package/lib/modes/daum-power.d.ts +0 -0
  164. package/lib/modes/daum-power.js +0 -0
  165. package/lib/modes/daum-premium-standard.d.ts +0 -0
  166. package/lib/modes/daum-premium-standard.js +0 -0
  167. package/lib/modes/daum-smarttrainer.d.ts +0 -0
  168. package/lib/modes/daum-smarttrainer.js +0 -0
  169. package/lib/modes/kettler-erg.d.ts +0 -0
  170. package/lib/modes/kettler-erg.js +0 -0
  171. package/lib/modes/power-base.d.ts +0 -0
  172. package/lib/modes/power-base.js +0 -0
  173. package/lib/modes/power-meter.d.ts +0 -0
  174. package/lib/modes/power-meter.js +0 -0
  175. package/lib/modes/simulator.d.ts +0 -0
  176. package/lib/modes/simulator.js +0 -0
  177. package/lib/modes/types.d.ts +0 -0
  178. package/lib/modes/types.js +0 -0
  179. package/lib/serial/SinglePathScanner.d.ts +17 -0
  180. package/lib/serial/SinglePathScanner.js +87 -0
  181. package/lib/serial/adapter-factory.d.ts +14 -0
  182. package/lib/serial/adapter-factory.js +30 -0
  183. package/lib/serial/adapter.d.ts +17 -0
  184. package/lib/serial/adapter.js +67 -0
  185. package/lib/serial/base/adapter.d.ts +0 -0
  186. package/lib/serial/base/adapter.js +0 -0
  187. package/lib/serial/base/comms.d.ts +0 -0
  188. package/lib/serial/base/comms.js +0 -0
  189. package/lib/serial/base/serial-interface.d.ts +0 -0
  190. package/lib/serial/base/serial-interface.js +0 -0
  191. package/lib/serial/base/serial-scanner.d.ts +0 -0
  192. package/lib/serial/base/serial-scanner.js +0 -0
  193. package/lib/serial/base/serialport.d.ts +0 -0
  194. package/lib/serial/base/serialport.js +0 -0
  195. package/lib/serial/bindings/tcp.d.ts +0 -0
  196. package/lib/serial/bindings/tcp.js +0 -0
  197. package/lib/serial/comm.d.ts +7 -0
  198. package/lib/serial/comm.js +2 -0
  199. package/lib/serial/comms.d.ts +62 -0
  200. package/lib/serial/comms.js +280 -0
  201. package/lib/serial/daum/DaumAdapter.d.ts +1 -1
  202. package/lib/serial/daum/DaumAdapter.js +13 -7
  203. package/lib/serial/daum/classic/PROTOCOL_NAME.d.ts +2 -0
  204. package/lib/serial/daum/classic/PROTOCOL_NAME.js +5 -0
  205. package/lib/serial/daum/classic/adapter.d.ts +1 -1
  206. package/lib/serial/daum/classic/adapter.js +1 -1
  207. package/lib/serial/daum/classic/comms.d.ts +0 -0
  208. package/lib/serial/daum/classic/comms.js +0 -0
  209. package/lib/serial/daum/classic/consts.d.ts +0 -0
  210. package/lib/serial/daum/classic/consts.js +0 -0
  211. package/lib/serial/daum/classic/mock.d.ts +0 -0
  212. package/lib/serial/daum/classic/mock.js +0 -0
  213. package/lib/serial/daum/classic/types.d.ts +0 -0
  214. package/lib/serial/daum/classic/types.js +0 -0
  215. package/lib/serial/daum/classic/utils.d.ts +0 -0
  216. package/lib/serial/daum/classic/utils.js +0 -0
  217. package/lib/serial/daum/consts.d.ts +0 -0
  218. package/lib/serial/daum/consts.js +0 -0
  219. package/lib/serial/daum/premium/adapter.d.ts +1 -1
  220. package/lib/serial/daum/premium/adapter.js +7 -2
  221. package/lib/serial/daum/premium/comms.d.ts +0 -0
  222. package/lib/serial/daum/premium/comms.js +0 -0
  223. package/lib/serial/daum/premium/consts.d.ts +0 -0
  224. package/lib/serial/daum/premium/consts.js +0 -0
  225. package/lib/serial/daum/premium/mock.d.ts +0 -0
  226. package/lib/serial/daum/premium/mock.js +0 -0
  227. package/lib/serial/daum/premium/types.d.ts +0 -0
  228. package/lib/serial/daum/premium/types.js +0 -0
  229. package/lib/serial/daum/premium/utils.d.ts +0 -0
  230. package/lib/serial/daum/premium/utils.js +0 -0
  231. package/lib/serial/daum/types.d.ts +0 -0
  232. package/lib/serial/daum/types.js +0 -0
  233. package/lib/serial/factories/adapter-factory.d.ts +0 -0
  234. package/lib/serial/factories/adapter-factory.js +0 -0
  235. package/lib/serial/index.d.ts +0 -0
  236. package/lib/serial/index.js +0 -0
  237. package/lib/serial/kettler/comms.d.ts +0 -0
  238. package/lib/serial/kettler/comms.js +0 -0
  239. package/lib/serial/kettler/ergo-racer/adapter.d.ts +0 -0
  240. package/lib/serial/kettler/ergo-racer/adapter.js +0 -0
  241. package/lib/serial/kettler/ergo-racer/mock.d.ts +0 -0
  242. package/lib/serial/kettler/ergo-racer/mock.js +0 -0
  243. package/lib/serial/kettler/types.d.ts +0 -0
  244. package/lib/serial/kettler/types.js +0 -0
  245. package/lib/serial/serial-interface.d.ts +36 -0
  246. package/lib/serial/serial-interface.js +288 -0
  247. package/lib/serial/serial-scanner.d.ts +16 -0
  248. package/lib/serial/serial-scanner.js +87 -0
  249. package/lib/serial/serialport.d.ts +17 -0
  250. package/lib/serial/serialport.js +87 -0
  251. package/lib/serial/types.d.ts +0 -0
  252. package/lib/serial/types.js +0 -0
  253. package/lib/simulator/Simulator.d.ts +0 -0
  254. package/lib/simulator/Simulator.js +0 -0
  255. package/lib/types/Command.d.ts +8 -0
  256. package/lib/types/Command.js +2 -0
  257. package/lib/types/adapter.d.ts +0 -0
  258. package/lib/types/adapter.js +0 -0
  259. package/lib/types/capabilities.d.ts +0 -0
  260. package/lib/types/capabilities.js +0 -0
  261. package/lib/types/command.d.ts +0 -0
  262. package/lib/types/command.js +0 -0
  263. package/lib/types/data.d.ts +0 -0
  264. package/lib/types/data.js +0 -0
  265. package/lib/types/device.d.ts +0 -0
  266. package/lib/types/device.js +0 -0
  267. package/lib/types/index.d.ts +0 -0
  268. package/lib/types/index.js +0 -0
  269. package/lib/types/interface.d.ts +0 -0
  270. package/lib/types/interface.js +0 -0
  271. package/lib/types/route.d.ts +0 -0
  272. package/lib/types/route.js +0 -0
  273. package/lib/types/types.d.ts +8 -0
  274. package/lib/types/types.js +2 -0
  275. package/lib/types/user.d.ts +0 -0
  276. package/lib/types/user.js +0 -0
  277. package/lib/utils/calculations.d.ts +0 -0
  278. package/lib/utils/calculations.js +0 -0
  279. package/lib/utils/utils.d.ts +0 -0
  280. package/lib/utils/utils.js +0 -0
  281. 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
- if (isRelaunch && this.isPaused())
191
+ let wasPaused = false;
192
+ if (isRelaunch && this.isPaused()) {
189
193
  this.resume();
190
- this.startPromise = this.performStart(props, isRelaunch).then((started) => __awaiter(this, void 0, void 0, function* () {
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 (_a) { }
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() {
@@ -0,0 +1,2 @@
1
+ export declare const PROTOCOL_NAME = "Daum Classic";
2
+ export declare const DEFAULT_GEAR = 10;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_GEAR = exports.PROTOCOL_NAME = void 0;
4
+ exports.PROTOCOL_NAME = "Daum Classic";
5
+ exports.DEFAULT_GEAR = 10;
@@ -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
- yield this.stop();
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
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
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
+ }