incyclist-devices 1.5.38 → 2.0.0

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 (267) hide show
  1. package/README.MD +238 -0
  2. package/lib/adapters.d.ts +7 -0
  3. package/lib/adapters.js +49 -0
  4. package/lib/antv2/adapter-factory.d.ts +21 -10
  5. package/lib/antv2/adapter-factory.js +51 -33
  6. package/lib/antv2/adapter.d.ts +65 -0
  7. package/lib/antv2/adapter.js +310 -0
  8. package/lib/antv2/ant-interface.d.ts +17 -11
  9. package/lib/antv2/ant-interface.js +41 -31
  10. package/lib/antv2/{ant-binding.d.ts → binding.d.ts} +1 -1
  11. package/lib/antv2/{ant-binding.js → binding.js} +1 -1
  12. package/lib/antv2/fe/adapter.d.ts +28 -0
  13. package/lib/antv2/{fe.js → fe/adapter.js} +106 -90
  14. package/lib/antv2/fe/index.d.ts +2 -0
  15. package/lib/antv2/fe/index.js +7 -0
  16. package/lib/antv2/hr/adapter.d.ts +15 -0
  17. package/lib/antv2/hr/adapter.js +76 -0
  18. package/lib/antv2/hr/index.d.ts +2 -0
  19. package/lib/antv2/hr/index.js +7 -0
  20. package/lib/antv2/index.d.ts +7 -0
  21. package/lib/antv2/index.js +20 -0
  22. package/lib/antv2/modes/ant-fe-adv-st-mode.d.ts +9 -0
  23. package/lib/{ant/antfe → antv2/modes}/ant-fe-adv-st-mode.js +1 -1
  24. package/lib/antv2/modes/ant-fe-erg-mode.d.ts +6 -0
  25. package/lib/{ant/antfe → antv2/modes}/ant-fe-erg-mode.js +1 -1
  26. package/lib/antv2/modes/ant-fe-st-mode.d.ts +5 -0
  27. package/lib/{ant/antfe → antv2/modes}/ant-fe-st-mode.js +1 -1
  28. package/lib/antv2/pwr/adapter.d.ts +24 -0
  29. package/lib/antv2/pwr/adapter.js +141 -0
  30. package/lib/antv2/pwr/index.d.ts +2 -0
  31. package/lib/antv2/pwr/index.js +7 -0
  32. package/lib/antv2/sensor-factory.d.ts +2 -2
  33. package/lib/antv2/types.d.ts +22 -0
  34. package/lib/antv2/types.js +5 -0
  35. package/lib/antv2/utils.d.ts +4 -0
  36. package/lib/antv2/utils.js +192 -0
  37. package/lib/base/adpater.d.ts +68 -0
  38. package/lib/base/adpater.js +183 -0
  39. package/lib/ble/adapter-factory.d.ts +33 -0
  40. package/lib/ble/adapter-factory.js +105 -0
  41. package/lib/ble/base/adapter.d.ts +53 -0
  42. package/lib/ble/base/adapter.js +290 -0
  43. package/lib/ble/base/comms-utils.d.ts +7 -0
  44. package/lib/ble/base/comms-utils.js +91 -0
  45. package/lib/ble/{ble-device.d.ts → base/comms.d.ts} +31 -16
  46. package/lib/ble/{ble-device.js → base/comms.js} +193 -55
  47. package/lib/ble/bindings/index.d.ts +2 -0
  48. package/lib/ble/bindings/index.js +8 -0
  49. package/lib/ble/bindings/linux.d.ts +15 -0
  50. package/lib/ble/bindings/linux.js +39 -0
  51. package/lib/ble/bindings/mock.d.ts +9 -0
  52. package/lib/ble/bindings/mock.js +108 -0
  53. package/lib/ble/bindings/types.d.ts +57 -0
  54. package/lib/ble/bindings/types.js +96 -0
  55. package/lib/ble/ble-interface.d.ts +38 -59
  56. package/lib/ble/ble-interface.js +254 -462
  57. package/lib/ble/ble-peripheral.d.ts +7 -5
  58. package/lib/ble/ble-peripheral.js +52 -21
  59. package/lib/ble/consts.d.ts +3 -0
  60. package/lib/ble/consts.js +4 -1
  61. package/lib/ble/cp/adapter.d.ts +22 -0
  62. package/lib/ble/cp/adapter.js +111 -0
  63. package/lib/ble/cp/comm.d.ts +31 -0
  64. package/lib/ble/cp/comm.js +125 -0
  65. package/lib/ble/cp/index.d.ts +4 -0
  66. package/lib/ble/cp/index.js +10 -0
  67. package/lib/ble/cp/types.d.ts +13 -0
  68. package/lib/ble/cp/types.js +2 -0
  69. package/lib/ble/elite/adapter.d.ts +19 -0
  70. package/lib/ble/elite/adapter.js +120 -0
  71. package/lib/ble/elite/comms.d.ts +32 -0
  72. package/lib/ble/elite/comms.js +126 -0
  73. package/lib/ble/elite/index.d.ts +3 -0
  74. package/lib/ble/elite/index.js +10 -0
  75. package/lib/ble/fm/adapter.d.ts +22 -0
  76. package/lib/ble/fm/adapter.js +249 -0
  77. package/lib/ble/fm/comms.d.ts +50 -0
  78. package/lib/ble/{fm.js → fm/comms.js} +34 -277
  79. package/lib/ble/fm/consts.d.ts +6 -0
  80. package/lib/ble/fm/consts.js +9 -0
  81. package/lib/ble/fm/index.d.ts +5 -0
  82. package/lib/ble/fm/index.js +13 -0
  83. package/lib/ble/fm/types.d.ts +30 -0
  84. package/lib/ble/fm/types.js +2 -0
  85. package/lib/ble/hr/adapter.d.ts +14 -0
  86. package/lib/ble/hr/adapter.js +45 -0
  87. package/lib/ble/hr/comm.d.ts +19 -0
  88. package/lib/ble/hr/comm.js +56 -0
  89. package/lib/ble/hr/index.d.ts +4 -0
  90. package/lib/ble/hr/index.js +10 -0
  91. package/lib/ble/hr/mock.d.ts +7 -0
  92. package/lib/ble/hr/mock.js +47 -0
  93. package/lib/ble/hr/types.d.ts +5 -0
  94. package/lib/ble/hr/types.js +2 -0
  95. package/lib/ble/index.d.ts +9 -0
  96. package/lib/ble/index.js +26 -0
  97. package/lib/ble/peripheral-cache.d.ts +43 -0
  98. package/lib/ble/peripheral-cache.js +107 -0
  99. package/lib/ble/tacx/adapter.d.ts +10 -0
  100. package/lib/ble/tacx/adapter.js +99 -0
  101. package/lib/ble/{tacx.d.ts → tacx/comms.d.ts} +11 -43
  102. package/lib/ble/{tacx.js → tacx/comms.js} +23 -155
  103. package/lib/ble/tacx/index.d.ts +4 -0
  104. package/lib/ble/tacx/index.js +10 -0
  105. package/lib/ble/tacx/types.d.ts +25 -0
  106. package/lib/ble/tacx/types.js +2 -0
  107. package/lib/ble/types.d.ts +128 -0
  108. package/lib/ble/types.js +2 -0
  109. package/lib/ble/utils.d.ts +17 -0
  110. package/lib/ble/utils.js +54 -0
  111. package/lib/ble/wahoo/adapter.d.ts +9 -0
  112. package/lib/ble/wahoo/adapter.js +95 -0
  113. package/lib/ble/{wahoo-kickr.d.ts → wahoo/comms.d.ts} +11 -44
  114. package/lib/ble/{wahoo-kickr.js → wahoo/comms.js} +29 -129
  115. package/lib/ble/wahoo/index.d.ts +4 -0
  116. package/lib/ble/wahoo/index.js +10 -0
  117. package/lib/ble/wahoo/types.d.ts +19 -0
  118. package/lib/ble/wahoo/types.js +2 -0
  119. package/lib/index.d.ts +15 -0
  120. package/lib/index.js +34 -0
  121. package/lib/interfaces.d.ts +7 -0
  122. package/lib/interfaces.js +27 -0
  123. package/lib/{ble → modes}/ble-erg-mode.d.ts +4 -4
  124. package/lib/{ble → modes}/ble-erg-mode.js +2 -2
  125. package/lib/{ble → modes}/ble-st-mode.d.ts +3 -3
  126. package/lib/{ble → modes}/ble-st-mode.js +1 -1
  127. package/lib/{cycling-mode.d.ts → modes/cycling-mode.d.ts} +8 -8
  128. package/lib/modes/power-base.d.ts +3 -3
  129. package/lib/modes/power-base.js +8 -4
  130. package/lib/modes/power-meter.d.ts +3 -3
  131. package/lib/modes/simulator.d.ts +2 -2
  132. package/lib/modes/simulator.js +1 -1
  133. package/lib/serial/adapter-factory.d.ts +12 -0
  134. package/lib/serial/adapter-factory.js +30 -0
  135. package/lib/serial/adapter.d.ts +21 -0
  136. package/lib/serial/adapter.js +61 -0
  137. package/lib/serial/bindings/tcp.d.ts +45 -0
  138. package/lib/serial/bindings/tcp.js +284 -0
  139. package/lib/serial/comm.d.ts +7 -0
  140. package/lib/serial/comm.js +2 -0
  141. package/lib/{daum → serial/daum}/DaumAdapter.d.ts +14 -23
  142. package/lib/{daum → serial/daum}/DaumAdapter.js +57 -97
  143. package/lib/{daum → serial/daum}/DaumPowerMeterCyclingMode.d.ts +2 -2
  144. package/lib/{daum → serial/daum}/DaumPowerMeterCyclingMode.js +1 -1
  145. package/lib/{daum → serial/daum}/ERGCyclingMode.d.ts +3 -3
  146. package/lib/{daum → serial/daum}/ERGCyclingMode.js +3 -3
  147. package/lib/{daum → serial/daum}/SmartTrainerCyclingMode.d.ts +3 -3
  148. package/lib/{daum → serial/daum}/SmartTrainerCyclingMode.js +4 -3
  149. package/lib/serial/daum/classic/adapter.d.ts +29 -0
  150. package/lib/{daum/classic/DaumClassicAdapter.js → serial/daum/classic/adapter.js} +77 -50
  151. package/lib/{daum/classic/bike.d.ts → serial/daum/classic/comms.d.ts} +14 -16
  152. package/lib/{daum/classic/bike.js → serial/daum/classic/comms.js} +68 -152
  153. package/lib/serial/daum/classic/mock.d.ts +96 -0
  154. package/lib/serial/daum/classic/mock.js +365 -0
  155. package/lib/{daum/classic/DaumClassicCyclingMode.d.ts → serial/daum/classic/modes/daum-classic.d.ts} +3 -3
  156. package/lib/{daum/classic/DaumClassicCyclingMode.js → serial/daum/classic/modes/daum-classic.js} +2 -2
  157. package/lib/{daum → serial/daum}/classic/utils.d.ts +1 -1
  158. package/lib/serial/daum/premium/adapter.d.ts +25 -0
  159. package/lib/{daum/premium/DaumPremiumAdapter.js → serial/daum/premium/adapter.js} +107 -47
  160. package/lib/{daum/premium/bike.d.ts → serial/daum/premium/comms.d.ts} +26 -54
  161. package/lib/{daum/premium/bike.js → serial/daum/premium/comms.js} +215 -420
  162. package/lib/serial/daum/premium/mock.d.ts +75 -0
  163. package/lib/serial/daum/premium/mock.js +289 -0
  164. package/lib/{daum/premium/DaumClassicCyclingMode.d.ts → serial/daum/premium/modes/daum-classic.d.ts} +3 -3
  165. package/lib/{daum/premium/DaumClassicCyclingMode.js → serial/daum/premium/modes/daum-classic.js} +2 -2
  166. package/lib/serial/daum/premium/types.d.ts +12 -0
  167. package/lib/serial/daum/premium/types.js +2 -0
  168. package/lib/{daum → serial/daum}/premium/utils.d.ts +8 -11
  169. package/lib/{daum → serial/daum}/premium/utils.js +22 -63
  170. package/lib/serial/index.d.ts +9 -0
  171. package/lib/serial/index.js +49 -0
  172. package/lib/{kettler → serial/kettler}/comms.d.ts +8 -6
  173. package/lib/{kettler → serial/kettler}/comms.js +71 -32
  174. package/lib/{kettler → serial/kettler}/ergo-racer/adapter.d.ts +14 -28
  175. package/lib/{kettler → serial/kettler}/ergo-racer/adapter.js +102 -169
  176. package/lib/serial/kettler/ergo-racer/mock.d.ts +66 -0
  177. package/lib/serial/kettler/ergo-racer/mock.js +216 -0
  178. package/lib/{kettler/ergo-racer/ERGCyclingMode.d.ts → serial/kettler/ergo-racer/modes/erg.d.ts} +4 -4
  179. package/lib/{kettler/ergo-racer/ERGCyclingMode.js → serial/kettler/ergo-racer/modes/erg.js} +2 -2
  180. package/lib/serial/serial-interface.d.ts +60 -0
  181. package/lib/serial/serial-interface.js +309 -0
  182. package/lib/simulator/Simulator.d.ts +12 -25
  183. package/lib/simulator/Simulator.js +26 -87
  184. package/lib/types/adapter.d.ts +39 -0
  185. package/lib/types/adapter.js +2 -0
  186. package/lib/types/capabilities.d.ts +8 -0
  187. package/lib/types/capabilities.js +12 -0
  188. package/lib/types/data.d.ts +12 -0
  189. package/lib/types/data.js +2 -0
  190. package/lib/types/device.d.ts +32 -0
  191. package/lib/types/device.js +11 -0
  192. package/lib/types/interface.d.ts +18 -0
  193. package/lib/types/interface.js +2 -0
  194. package/lib/types/route.d.ts +2 -2
  195. package/lib/types/user.d.ts +1 -1
  196. package/lib/{utils.d.ts → utils/utils.d.ts} +1 -0
  197. package/lib/{utils.js → utils/utils.js} +5 -1
  198. package/package.json +16 -14
  199. package/lib/DeviceSupport.d.ts +0 -36
  200. package/lib/DeviceSupport.js +0 -82
  201. package/lib/ant/AntAdapter.d.ts +0 -50
  202. package/lib/ant/AntAdapter.js +0 -109
  203. package/lib/ant/AntScanner.d.ts +0 -60
  204. package/lib/ant/AntScanner.js +0 -651
  205. package/lib/ant/antfe/AntFEAdapter.d.ts +0 -83
  206. package/lib/ant/antfe/AntFEAdapter.js +0 -652
  207. package/lib/ant/antfe/ant-fe-adv-st-mode.d.ts +0 -9
  208. package/lib/ant/antfe/ant-fe-erg-mode.d.ts +0 -6
  209. package/lib/ant/antfe/ant-fe-st-mode.d.ts +0 -5
  210. package/lib/ant/anthrm/AntHrmAdapter.d.ts +0 -16
  211. package/lib/ant/anthrm/AntHrmAdapter.js +0 -130
  212. package/lib/ant/antpwr/pwr-adapter.d.ts +0 -49
  213. package/lib/ant/antpwr/pwr-adapter.js +0 -251
  214. package/lib/ant/utils.d.ts +0 -1
  215. package/lib/ant/utils.js +0 -23
  216. package/lib/antv2/AntAdapter.d.ts +0 -48
  217. package/lib/antv2/AntAdapter.js +0 -104
  218. package/lib/antv2/ant-device.d.ts +0 -59
  219. package/lib/antv2/ant-device.js +0 -161
  220. package/lib/antv2/fe.d.ts +0 -32
  221. package/lib/antv2/hr.d.ts +0 -18
  222. package/lib/antv2/hr.js +0 -102
  223. package/lib/antv2/incyclist-protocol.d.ts +0 -37
  224. package/lib/antv2/incyclist-protocol.js +0 -126
  225. package/lib/antv2/pwr.d.ts +0 -28
  226. package/lib/antv2/pwr.js +0 -171
  227. package/lib/ble/ble.d.ts +0 -129
  228. package/lib/ble/ble.js +0 -86
  229. package/lib/ble/elite.d.ts +0 -90
  230. package/lib/ble/elite.js +0 -322
  231. package/lib/ble/fm.d.ts +0 -125
  232. package/lib/ble/hrm.d.ts +0 -48
  233. package/lib/ble/hrm.js +0 -134
  234. package/lib/ble/incyclist-protocol.d.ts +0 -31
  235. package/lib/ble/incyclist-protocol.js +0 -153
  236. package/lib/ble/pwr.d.ts +0 -89
  237. package/lib/ble/pwr.js +0 -322
  238. package/lib/daum/classic/DaumClassicAdapter.d.ts +0 -28
  239. package/lib/daum/classic/DaumClassicProtocol.d.ts +0 -27
  240. package/lib/daum/classic/DaumClassicProtocol.js +0 -185
  241. package/lib/daum/premium/DaumPremiumAdapter.d.ts +0 -16
  242. package/lib/daum/premium/DaumPremiumProtocol.d.ts +0 -32
  243. package/lib/daum/premium/DaumPremiumProtocol.js +0 -207
  244. package/lib/daum/premium/tcpserial.d.ts +0 -33
  245. package/lib/daum/premium/tcpserial.js +0 -123
  246. package/lib/device.d.ts +0 -94
  247. package/lib/device.js +0 -76
  248. package/lib/kettler/ergo-racer/protocol.d.ts +0 -41
  249. package/lib/kettler/ergo-racer/protocol.js +0 -203
  250. package/lib/protocol.d.ts +0 -74
  251. package/lib/protocol.js +0 -41
  252. package/lib/registry.d.ts +0 -8
  253. package/lib/registry.js +0 -33
  254. package/lib/serialport/bindings/tcp.d.ts +0 -20
  255. package/lib/serialport/bindings/tcp.js +0 -33
  256. package/lib/serialport/index.d.ts +0 -2
  257. package/lib/serialport/index.js +0 -29
  258. package/lib/serialport/serialport.d.ts +0 -29
  259. package/lib/serialport/serialport.js +0 -87
  260. /package/lib/{cycling-mode.js → modes/cycling-mode.js} +0 -0
  261. /package/lib/{daum → serial/daum}/classic/utils.js +0 -0
  262. /package/lib/{daum → serial/daum}/constants.d.ts +0 -0
  263. /package/lib/{daum → serial/daum}/constants.js +0 -0
  264. /package/lib/{serialport.d.ts → serial/serialport.d.ts} +0 -0
  265. /package/lib/{serialport.js → serial/serialport.js} +0 -0
  266. /package/lib/{calculations.d.ts → utils/calculations.d.ts} +0 -0
  267. /package/lib/{calculations.js → utils/calculations.js} +0 -0
@@ -1,23 +1,4 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
2
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
22
3
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
23
4
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -32,17 +13,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
32
13
  };
33
14
  Object.defineProperty(exports, "__esModule", { value: true });
34
15
  exports.Simulator = void 0;
35
- const protocol_1 = __importStar(require("../protocol"));
36
- const registry_1 = __importDefault(require("../registry"));
37
- const device_1 = __importDefault(require("../device"));
16
+ const adpater_1 = require("../base/adpater");
38
17
  const gd_eventlog_1 = require("gd-eventlog");
39
18
  const simulator_1 = __importDefault(require("../modes/simulator"));
40
- const device_2 = require("../device");
41
- const DEFAULT_SETTINGS = { name: 'Simulator', port: '', isBot: false };
42
- class Simulator extends device_1.default {
43
- constructor(protocol, props = DEFAULT_SETTINGS) {
44
- const proto = protocol || registry_1.default.findByName('Simulator');
45
- super(proto);
19
+ const capabilities_1 = require("../types/capabilities");
20
+ const DEFAULT_PROPS = { isBot: false };
21
+ class Simulator extends adpater_1.ControllableDevice {
22
+ constructor(settings, props = DEFAULT_PROPS) {
23
+ super(settings, props);
46
24
  this.logger = new gd_eventlog_1.EventLogger(Simulator.NAME);
47
25
  this.speed = 0;
48
26
  this.power = 0;
@@ -59,12 +37,16 @@ class Simulator extends device_1.default {
59
37
  this.isBot = props.isBot || false;
60
38
  this.ignoreHrm = false;
61
39
  const name = this.getCyclingMode().getName();
62
- const modeSettings = this.isBot ? props.settings || {} : this.getCyclingMode().getSettings();
40
+ const modeSettings = this.isBot ? props.settings : this.getCyclingMode().getSettings();
63
41
  this.setCyclingMode(name, modeSettings);
42
+ this.capabilities = [
43
+ capabilities_1.IncyclistCapability.Power, capabilities_1.IncyclistCapability.Speed, capabilities_1.IncyclistCapability.Cadence, capabilities_1.IncyclistCapability.Gear,
44
+ capabilities_1.IncyclistCapability.Control
45
+ ];
46
+ }
47
+ isEqual(settings) {
48
+ return settings.interface === this.getInterface() && settings.name === this.settings.name;
64
49
  }
65
- isBike() { return true; }
66
- isHrm() { return false; }
67
- isPower() { return true; }
68
50
  isSame(device) {
69
51
  if (!(device instanceof Simulator))
70
52
  return false;
@@ -72,18 +54,7 @@ class Simulator extends device_1.default {
72
54
  }
73
55
  getID() { return Simulator.NAME; }
74
56
  getName() { return Simulator.NAME; }
75
- getPort() { return 'local'; }
76
- getWeight() {
77
- let userWeight = device_2.DEFAULT_USER_WEIGHT;
78
- let bikeWeight = device_2.DEFAULT_BIKE_WEIGHT;
79
- if (this.userSettings && this.userSettings.weight) {
80
- userWeight = Number(this.userSettings.weight);
81
- }
82
- if (this.bikeSettings && this.bikeSettings.weight) {
83
- bikeWeight = Number(this.bikeSettings.weight);
84
- }
85
- return bikeWeight + userWeight;
86
- }
57
+ getUniqueName() { return Simulator.NAME; }
87
58
  setIgnoreHrm(ignore) {
88
59
  this.ignoreHrm = ignore;
89
60
  }
@@ -120,15 +91,14 @@ class Simulator extends device_1.default {
120
91
  start(props) {
121
92
  return __awaiter(this, void 0, void 0, function* () {
122
93
  this.startProps = props;
123
- if (props && props.user)
124
- this.userSettings = props.user;
125
- if (props && props.bikeSettings)
126
- this.bikeSettings = props.bikeSettings;
94
+ this.paused = false;
95
+ if (props)
96
+ this.setBikeProps(props);
127
97
  return new Promise((resolve) => {
128
98
  if (!this.isBot)
129
99
  this.logger.logEvent({ message: 'start', iv: this.iv });
130
100
  if (this.started) {
131
- return resolve({ started: true, error: undefined });
101
+ return resolve(true);
132
102
  }
133
103
  this.started = true;
134
104
  this.time = Date.now();
@@ -146,7 +116,7 @@ class Simulator extends device_1.default {
146
116
  this.iv = setInterval(() => this.update(), 1000);
147
117
  if (!this.isBot)
148
118
  this.logger.logEvent({ message: 'started' });
149
- resolve({ started: true, error: undefined });
119
+ resolve(true);
150
120
  });
151
121
  });
152
122
  }
@@ -217,6 +187,8 @@ class Simulator extends device_1.default {
217
187
  if (!this.isBot && startDelay && timeSinceStart < startDelay * 1000) {
218
188
  return;
219
189
  }
190
+ if (this.paused)
191
+ return;
220
192
  const prevDist = this.data.distanceInternal;
221
193
  const d = this.data;
222
194
  const prevTime = d.deviceTime;
@@ -235,12 +207,12 @@ class Simulator extends device_1.default {
235
207
  if (this.isBot) {
236
208
  this.logger.logEvent(Object.assign({ message: 'Coach update', prevDist, prevTime }, data));
237
209
  }
238
- this.paused = (this.data.speed === 0);
239
210
  if (this.ignoreHrm)
240
211
  delete data.heartrate;
241
- if (this.onDataFn) {
242
- this.onDataFn(data);
243
- }
212
+ this.emitData(data);
213
+ }
214
+ canSendUpdate() {
215
+ return true;
244
216
  }
245
217
  calculateDistance(speedKps, timeS) {
246
218
  return timeS * speedKps / 3.6;
@@ -253,36 +225,3 @@ class Simulator extends device_1.default {
253
225
  }
254
226
  exports.Simulator = Simulator;
255
227
  Simulator.NAME = 'Simulator';
256
- class SimulatorProtocol extends protocol_1.default {
257
- constructor() {
258
- super();
259
- this.devices = [];
260
- }
261
- add(settings) {
262
- let device = new Simulator(this, settings);
263
- this.devices.push(device);
264
- return device;
265
- }
266
- getName() {
267
- return SimulatorProtocol.NAME;
268
- }
269
- getInterfaces() {
270
- return [protocol_1.INTERFACE.SIMULATOR];
271
- }
272
- isBike() {
273
- return true;
274
- }
275
- isHrm() {
276
- return false;
277
- }
278
- isPower() {
279
- return true;
280
- }
281
- getDevices() {
282
- return this.devices;
283
- }
284
- }
285
- exports.default = SimulatorProtocol;
286
- SimulatorProtocol.NAME = 'Simulator';
287
- const simulator = new SimulatorProtocol();
288
- registry_1.default.register(simulator);
@@ -0,0 +1,39 @@
1
+ /// <reference types="node" />
2
+ import EventEmitter from "events";
3
+ import CyclingMode from "../modes/cycling-mode";
4
+ import { IncyclistCapability } from "./capabilities";
5
+ import { DeviceData } from "./data";
6
+ import { DeviceProperties, DeviceSettings } from "./device";
7
+ import { User } from "./user";
8
+ export type OnDeviceDataCallback = (data: DeviceData) => void;
9
+ export interface IncyclistDeviceAdapter extends EventEmitter {
10
+ connect(): Promise<boolean>;
11
+ close(): Promise<boolean>;
12
+ check(): Promise<boolean>;
13
+ isEqual(settings: DeviceSettings): boolean;
14
+ getCapabilities(): IncyclistCapability[];
15
+ hasCapability(capability: IncyclistCapability): boolean;
16
+ addCapability(capability: IncyclistCapability): void;
17
+ isControllable(): boolean;
18
+ getName(): string;
19
+ getUniqueName(): string;
20
+ getSettings(): DeviceSettings;
21
+ getDisplayName(): string;
22
+ update(): any;
23
+ start(props?: DeviceProperties): Promise<boolean>;
24
+ stop(): Promise<boolean>;
25
+ pause(): Promise<boolean>;
26
+ resume(): Promise<boolean>;
27
+ sendUpdate(request: any): any;
28
+ getMaxUpdateFrequency(): any;
29
+ setMaxUpdateFrequency(value: number): any;
30
+ onData(callback: OnDeviceDataCallback): any;
31
+ }
32
+ export interface Bike {
33
+ setCyclingMode(mode: CyclingMode | string, settings?: any): void;
34
+ getSupportedCyclingModes(): Array<any>;
35
+ getCyclingMode(): CyclingMode;
36
+ getDefaultCyclingMode(): CyclingMode;
37
+ setBikeProps(props: DeviceProperties): void;
38
+ setUser(user: User): void;
39
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,8 @@
1
+ export declare enum IncyclistCapability {
2
+ Power = "power",
3
+ Speed = "speed",
4
+ Cadence = "cadence",
5
+ HeartRate = "heartrate",
6
+ Gear = "gear",
7
+ Control = "control"
8
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IncyclistCapability = void 0;
4
+ var IncyclistCapability;
5
+ (function (IncyclistCapability) {
6
+ IncyclistCapability["Power"] = "power";
7
+ IncyclistCapability["Speed"] = "speed";
8
+ IncyclistCapability["Cadence"] = "cadence";
9
+ IncyclistCapability["HeartRate"] = "heartrate";
10
+ IncyclistCapability["Gear"] = "gear";
11
+ IncyclistCapability["Control"] = "control";
12
+ })(IncyclistCapability = exports.IncyclistCapability || (exports.IncyclistCapability = {}));
@@ -0,0 +1,12 @@
1
+ export type DeviceData = {
2
+ speed?: number;
3
+ slope?: number;
4
+ power?: number;
5
+ cadence?: number;
6
+ heartrate?: number;
7
+ distance?: number;
8
+ timestamp?: number;
9
+ deviceTime?: number;
10
+ deviceDistanceCounter?: number;
11
+ internalDistanceCounter?: number;
12
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,32 @@
1
+ import { EventLogger } from "gd-eventlog";
2
+ import { IncyclistInterface } from "./interface";
3
+ import { User } from "./user";
4
+ export declare const INTERFACE: {
5
+ SERIAL: string;
6
+ TCPIP: string;
7
+ ANT: string;
8
+ BLE: string;
9
+ USB: string;
10
+ SIMULATOR: string;
11
+ };
12
+ export type Device = {
13
+ getID(): string;
14
+ getName(): string;
15
+ getInterface(): string;
16
+ };
17
+ export type DeviceProperties = {
18
+ user?: User;
19
+ userWeight?: number;
20
+ bikeWeight?: number;
21
+ };
22
+ export interface DeviceStartProperties extends DeviceProperties {
23
+ timeout?: number;
24
+ }
25
+ export type IncyclistScanProps = {
26
+ timeout?: number;
27
+ logger?: EventLogger;
28
+ };
29
+ export type DeviceSettings = {
30
+ interface: string | IncyclistInterface;
31
+ name?: string;
32
+ };
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.INTERFACE = void 0;
4
+ exports.INTERFACE = {
5
+ SERIAL: 'serial',
6
+ TCPIP: 'tcpip',
7
+ ANT: 'ant',
8
+ BLE: 'ble',
9
+ USB: 'usb',
10
+ SIMULATOR: 'simulator'
11
+ };
@@ -0,0 +1,18 @@
1
+ /// <reference types="node" />
2
+ import EventEmitter from "events";
3
+ import { EventLogger } from "gd-eventlog";
4
+ import { IncyclistScanProps, DeviceSettings } from "./device";
5
+ export type InterfaceProps = {
6
+ binding?: any;
7
+ logger?: EventLogger;
8
+ log?: boolean;
9
+ };
10
+ export interface IncyclistInterface extends EventEmitter {
11
+ getName(): string;
12
+ setBinding(binding: any): void;
13
+ connect(): Promise<boolean>;
14
+ disconnect(): Promise<boolean>;
15
+ isConnected(): boolean;
16
+ scan(props: IncyclistScanProps): Promise<DeviceSettings[]>;
17
+ stopScan(): Promise<boolean>;
18
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,4 +1,4 @@
1
- export declare type Point = {
1
+ export type Point = {
2
2
  lat?: number;
3
3
  lng?: number;
4
4
  elevation?: number;
@@ -10,7 +10,7 @@ export declare enum RouteType {
10
10
  FOLLOW_ROUTE = "follow route",
11
11
  VIDEO = "video"
12
12
  }
13
- export declare type Route = {
13
+ export type Route = {
14
14
  programId: number;
15
15
  points: Point[];
16
16
  type: string;
@@ -3,7 +3,7 @@ export declare enum Gender {
3
3
  FEMALE = "F",
4
4
  OTHERS = "o"
5
5
  }
6
- export declare type User = {
6
+ export type User = {
7
7
  weight?: number;
8
8
  length?: number;
9
9
  age?: number;
@@ -1,4 +1,5 @@
1
1
  export declare const sleep: (ms: any) => Promise<unknown>;
2
+ export declare const resolveNextTick: () => Promise<void>;
2
3
  export declare function runWithRetries(fn: any, maxRetries: any, timeBetween: any): Promise<unknown>;
3
4
  export declare function floatVal(d?: number | string): number;
4
5
  export declare function intVal(d?: number | string): number;
@@ -9,11 +9,15 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.Queue = exports.hexstr = exports.intVal = exports.floatVal = exports.runWithRetries = exports.sleep = void 0;
12
+ exports.Queue = exports.hexstr = exports.intVal = exports.floatVal = exports.runWithRetries = exports.resolveNextTick = exports.sleep = void 0;
13
13
  const sleep = (ms) => {
14
14
  return new Promise(resolve => setTimeout(resolve, ms));
15
15
  };
16
16
  exports.sleep = sleep;
17
+ const resolveNextTick = () => {
18
+ return new Promise(resolve => process.nextTick(() => resolve()));
19
+ };
20
+ exports.resolveNextTick = resolveNextTick;
17
21
  function runWithRetries(fn, maxRetries, timeBetween) {
18
22
  return new Promise((resolve, reject) => {
19
23
  let retries = 0;
package/package.json CHANGED
@@ -1,37 +1,39 @@
1
1
  {
2
2
  "name": "incyclist-devices",
3
- "version": "1.5.38",
3
+ "version": "2.0.0",
4
4
  "dependencies": {
5
+ "@serialport/bindings-interface": "^1.2.2",
5
6
  "@serialport/parser-byte-length": "^9.0.1",
6
7
  "@serialport/parser-delimiter": "^9.0.1",
7
- "@types/serialport": "^8.0.1",
8
- "gd-ant-plus": "^0.0.33",
9
- "incyclist-ant-plus": "^0.1.15",
8
+ "@serialport/parser-readline": "^10.5.0",
9
+ "@serialport/stream": "^10.5.0",
10
+ "incyclist-ant-plus": "^0.1.18",
10
11
  "win32filetime": "^1.0.2"
11
12
  },
12
13
  "peerDependencies": {
13
14
  "gd-eventlog": "^0.1.22"
14
15
  },
15
16
  "devDependencies": {
16
- "@types/jest": "^27.0.3",
17
- "@types/node": "^10.17.58",
18
- "eslint": "^7.32.0",
19
- "eslint-config-react-app": "^6.0.0",
20
- "eslint-loader": "^4.0.2",
21
- "jest": "^27.4.3",
22
- "ts-jest": "^27.1.0",
23
- "typescript": "^4.5.2"
17
+ "@serialport/binding-mock": "^10.2.2",
18
+ "@serialport/bindings-cpp": "^10.8.0",
19
+ "@types/jest": "^29.2.4",
20
+ "@types/node": "^18.11.18",
21
+ "eslint": "^8.30.0",
22
+ "eslint-config-react-app": "^7.0.1",
23
+ "jest": "^29.3.1",
24
+ "ts-jest": "^29.0.3",
25
+ "typescript": "^4.9.4"
24
26
  },
25
27
  "scripts": {
26
28
  "lint": "eslint . --ext .ts",
27
29
  "build": "tsc",
28
30
  "test": "jest --coverage",
29
- "dev": "nodemon --watch src -e ts,js --exec npm run build"
31
+ "dev": "tsc --watch"
30
32
  },
31
33
  "files": [
32
34
  "lib/"
33
35
  ],
34
- "main": "lib/DeviceSupport.js",
36
+ "main": "lib/index.js",
35
37
  "directories": {
36
38
  "example": "./sample",
37
39
  "lib": "./src"
@@ -1,36 +0,0 @@
1
- import DeviceRegistry from './registry';
2
- import DeviceAdapter from './device';
3
- import DeviceProtocolBase, { INTERFACE, DeviceProtocol } from './protocol';
4
- import SimulatorProtocol from './simulator/Simulator';
5
- import DaumPremiumProtocol from './daum/premium/DaumPremiumProtocol';
6
- import DaumClassicProtocol from './daum/classic/DaumClassicProtocol';
7
- import KettlerRacerProtocol from './kettler/ergo-racer/protocol';
8
- import { AntScanner } from './ant/AntScanner';
9
- import { CyclingModeProperyType } from './cycling-mode';
10
- import AntProtocol from './antv2/incyclist-protocol';
11
- import AntInterface from './antv2/ant-interface';
12
- import BleProtocol from './ble/incyclist-protocol';
13
- import BleInterface from './ble/ble-interface';
14
- import BleHrmDevice from './ble/hrm';
15
- import BleCyclingPowerDevice from './ble/pwr';
16
- import BleFitnessMachineDevice from './ble/fm';
17
- import WahooAdvancedFitnessMachineDevice from './ble/wahoo-kickr';
18
- declare const Protocols: {
19
- SimulatorProtocol: typeof SimulatorProtocol;
20
- DaumClassicProtocol: typeof DaumClassicProtocol;
21
- DaumPremiumProtocol: typeof DaumPremiumProtocol;
22
- KettlerRacerProtocol: typeof KettlerRacerProtocol;
23
- BleProtocol: typeof BleProtocol;
24
- };
25
- export interface FeatureList {
26
- [key: string]: boolean;
27
- }
28
- export default class DeviceSupport {
29
- static _features: FeatureList;
30
- static init(props?: {
31
- features?: FeatureList;
32
- }): void;
33
- static hasFeature(feature: string): boolean;
34
- static setFeature(key: string, value: boolean): void;
35
- }
36
- export { DeviceProtocolBase, DeviceProtocol, DeviceRegistry, INTERFACE, DeviceAdapter as Device, Protocols, AntScanner, AntProtocol, AntInterface, CyclingModeProperyType, BleProtocol, BleInterface, BleHrmDevice, BleCyclingPowerDevice, BleFitnessMachineDevice, WahooAdvancedFitnessMachineDevice };
@@ -1,82 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
- var __importDefault = (this && this.__importDefault) || function (mod) {
22
- return (mod && mod.__esModule) ? mod : { "default": mod };
23
- };
24
- Object.defineProperty(exports, "__esModule", { value: true });
25
- exports.WahooAdvancedFitnessMachineDevice = exports.BleFitnessMachineDevice = exports.BleCyclingPowerDevice = exports.BleHrmDevice = exports.BleInterface = exports.BleProtocol = exports.CyclingModeProperyType = exports.AntInterface = exports.AntProtocol = exports.AntScanner = exports.Protocols = exports.Device = exports.INTERFACE = exports.DeviceRegistry = exports.DeviceProtocolBase = void 0;
26
- const registry_1 = __importDefault(require("./registry"));
27
- exports.DeviceRegistry = registry_1.default;
28
- const device_1 = __importDefault(require("./device"));
29
- exports.Device = device_1.default;
30
- const protocol_1 = __importStar(require("./protocol"));
31
- exports.DeviceProtocolBase = protocol_1.default;
32
- Object.defineProperty(exports, "INTERFACE", { enumerable: true, get: function () { return protocol_1.INTERFACE; } });
33
- const Simulator_1 = __importDefault(require("./simulator/Simulator"));
34
- const DaumPremiumProtocol_1 = __importDefault(require("./daum/premium/DaumPremiumProtocol"));
35
- const DaumClassicProtocol_1 = __importDefault(require("./daum/classic/DaumClassicProtocol"));
36
- const protocol_2 = __importDefault(require("./kettler/ergo-racer/protocol"));
37
- const AntScanner_1 = require("./ant/AntScanner");
38
- Object.defineProperty(exports, "AntScanner", { enumerable: true, get: function () { return AntScanner_1.AntScanner; } });
39
- const cycling_mode_1 = require("./cycling-mode");
40
- Object.defineProperty(exports, "CyclingModeProperyType", { enumerable: true, get: function () { return cycling_mode_1.CyclingModeProperyType; } });
41
- const incyclist_protocol_1 = __importDefault(require("./antv2/incyclist-protocol"));
42
- exports.AntProtocol = incyclist_protocol_1.default;
43
- const ant_interface_1 = __importDefault(require("./antv2/ant-interface"));
44
- exports.AntInterface = ant_interface_1.default;
45
- const incyclist_protocol_2 = __importDefault(require("./ble/incyclist-protocol"));
46
- exports.BleProtocol = incyclist_protocol_2.default;
47
- const ble_interface_1 = __importDefault(require("./ble/ble-interface"));
48
- exports.BleInterface = ble_interface_1.default;
49
- const hrm_1 = __importDefault(require("./ble/hrm"));
50
- exports.BleHrmDevice = hrm_1.default;
51
- const pwr_1 = __importDefault(require("./ble/pwr"));
52
- exports.BleCyclingPowerDevice = pwr_1.default;
53
- const fm_1 = __importDefault(require("./ble/fm"));
54
- exports.BleFitnessMachineDevice = fm_1.default;
55
- const wahoo_kickr_1 = __importDefault(require("./ble/wahoo-kickr"));
56
- exports.WahooAdvancedFitnessMachineDevice = wahoo_kickr_1.default;
57
- const Protocols = {
58
- SimulatorProtocol: Simulator_1.default,
59
- DaumClassicProtocol: DaumClassicProtocol_1.default,
60
- DaumPremiumProtocol: DaumPremiumProtocol_1.default,
61
- KettlerRacerProtocol: protocol_2.default,
62
- BleProtocol: incyclist_protocol_2.default
63
- };
64
- exports.Protocols = Protocols;
65
- class DeviceSupport {
66
- static init(props = {}) {
67
- if (props.features) {
68
- this._features = props.features;
69
- }
70
- }
71
- static hasFeature(feature) {
72
- const featureVal = this._features[feature];
73
- if (featureVal === undefined)
74
- return false;
75
- return featureVal;
76
- }
77
- static setFeature(key, value) {
78
- this._features[key] = value;
79
- }
80
- }
81
- exports.default = DeviceSupport;
82
- DeviceSupport._features = {};
@@ -1,50 +0,0 @@
1
- import DeviceAdapter from "../device";
2
- import { EventLogger } from 'gd-eventlog';
3
- export declare const DEFAULT_UPDATE_FREQUENCY = 1000;
4
- export default class AntAdapter extends DeviceAdapter {
5
- paused: boolean;
6
- stopped: boolean;
7
- ignoreHrm: boolean;
8
- ignoreBike: boolean;
9
- ignorePower: boolean;
10
- deviceID: string;
11
- port: string;
12
- stick: any;
13
- channel: number;
14
- sensor: any;
15
- deviceData: any;
16
- data: any;
17
- logger: EventLogger;
18
- lastUpdate?: number;
19
- updateFrequency: number;
20
- userSettings: {
21
- weight?: number;
22
- };
23
- bikeSettings: {
24
- weight?: number;
25
- };
26
- constructor(protocol: any);
27
- isSame(device: DeviceAdapter): boolean;
28
- setSensor(sensor: any): void;
29
- getID(): string;
30
- setIgnoreHrm(ignore: any): void;
31
- setIgnoreBike(ignore: any): void;
32
- setIgnorePower(ignore: any): void;
33
- getProfile(): string;
34
- getPort(): string;
35
- getWeight(): number;
36
- setChannel(channel: any): void;
37
- setStick(stick: any): void;
38
- isStopped(): boolean;
39
- onDeviceData(data: any): void;
40
- onDeviceEvent(data: any): void;
41
- onAttached(): void;
42
- update(): void;
43
- check(): void;
44
- connect(): void;
45
- close(): void;
46
- pause(): Promise<boolean>;
47
- resume(): Promise<boolean>;
48
- start(props?: any): Promise<any>;
49
- stop(): Promise<boolean>;
50
- }