incyclist-devices 2.1.14 → 2.1.16

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 +0 -0
  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 +1 -0
  62. package/lib/ble/base/adapter.js +20 -13
  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 +1 -0
  84. package/lib/ble/cp/adapter.js +8 -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 +1 -0
  188. package/lib/serial/base/comms.js +9 -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 +0 -0
  202. package/lib/serial/daum/DaumAdapter.js +0 -0
  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 +0 -0
  206. package/lib/serial/daum/classic/adapter.js +8 -5
  207. package/lib/serial/daum/classic/comms.d.ts +1 -0
  208. package/lib/serial/daum/classic/comms.js +5 -17
  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 +0 -0
  220. package/lib/serial/daum/premium/adapter.js +0 -0
  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;
File without changes
File without changes
@@ -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;
File without changes
@@ -105,21 +105,24 @@ class DaumClassicAdapter extends DaumAdapter_1.default {
105
105
  if (!isRelaunch && !this.getComms().isConnected()) {
106
106
  yield this.verifyConnection();
107
107
  }
108
- yield this.getComms().resetDevice();
109
- if (!startState.setProg) {
108
+ if (!wasPaused && !startState.reset) {
109
+ yield this.getComms().resetDevice();
110
+ startState.reset = true;
111
+ }
112
+ if (!wasPaused && !startState.setProg) {
110
113
  yield this.getComms().setProg(0);
111
114
  startState.setProg = true;
112
115
  }
113
- if (!startState.setPerson) {
116
+ if (!wasPaused && !startState.setPerson) {
114
117
  yield this.getComms().setPerson(user);
115
118
  startState.setPerson = true;
116
119
  }
117
- if (!startState.setBikeType) {
120
+ if (!wasPaused && !startState.setBikeType) {
118
121
  const bikeType = this.getCyclingMode().getSetting('bikeType') || 'race';
119
122
  yield this.getComms().setBikeType(bikeType.toLowerCase());
120
123
  startState.setBikeType = true;
121
124
  }
122
- if (!startState.startProg) {
125
+ if (!wasPaused && !startState.startProg) {
123
126
  yield this.getComms().startProg();
124
127
  startState.startProg = true;
125
128
  }
@@ -6,6 +6,7 @@ import { DeviceType, IncyclistBikeData, User } from '../../../types';
6
6
  export default class Daum8008 extends SerialPortComms<DaumClassicCommsState, DaumClassicRequest, DaumClassicResponse> implements DaumSerialComms {
7
7
  protected bikeNo: number;
8
8
  protected prevFailedPayload: any;
9
+ protected expected: any;
9
10
  constructor(props: SerialCommProps);
10
11
  validatePath(path: string): string;
11
12
  getDefaultLoggerName(): string;
@@ -22,6 +22,7 @@ class Daum8008 extends comms_1.default {
22
22
  constructor(props) {
23
23
  super(props);
24
24
  this.bikeNo = 0;
25
+ this.expected = undefined;
25
26
  }
26
27
  validatePath(path) {
27
28
  return path;
@@ -36,19 +37,7 @@ class Daum8008 extends comms_1.default {
36
37
  }
37
38
  initForResponse(expected) {
38
39
  return __awaiter(this, void 0, void 0, function* () {
39
- const parser = this.portPipe(new ByteLength({ length: expected }));
40
- if (!parser)
41
- return;
42
- const onDataHandler = (data) => {
43
- if (data.length < expected) {
44
- this.logEvent({ message: 'Partial response', data: Buffer.from(data).toString('hex') });
45
- return;
46
- }
47
- this.portUnpipe();
48
- parser.off('data', onDataHandler);
49
- this.recvState.data.enqueue({ type: 'Response', data });
50
- };
51
- parser.on('data', onDataHandler);
40
+ this.expected = expected;
52
41
  });
53
42
  }
54
43
  waitForResponse() {
@@ -58,10 +47,9 @@ class Daum8008 extends comms_1.default {
58
47
  let start = Date.now();
59
48
  let tsTimeout = start + timeout;
60
49
  while (waitingForResponse && Date.now() < tsTimeout) {
61
- const response = this.recvState.data.dequeue();
62
- if (response) {
63
- return response;
64
- }
50
+ const data = yield this.portRead(this.expected);
51
+ if (data)
52
+ return { type: 'Response', data };
65
53
  yield (0, utils_1.sleep)(5);
66
54
  }
67
55
  throw new types_1.ResponseTimeout();
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
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
+ }