incyclist-devices 2.4.14 → 3.0.1

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 (569) hide show
  1. package/lib/cjs/antv2/base/adapter.js +459 -0
  2. package/lib/cjs/antv2/base/interface.js +399 -0
  3. package/lib/{antv2 → cjs/antv2}/cad/adapter.js +6 -6
  4. package/lib/{antv2 → cjs/antv2}/cad/index.js +2 -2
  5. package/lib/{antv2 → cjs/antv2}/factories/adapter-factory.js +4 -2
  6. package/lib/{antv2 → cjs/antv2}/factories/index.js +1 -1
  7. package/lib/{antv2 → cjs/antv2}/factories/sensor-factory.js +3 -4
  8. package/lib/cjs/antv2/fe/adapter.js +273 -0
  9. package/lib/{antv2/pwr → cjs/antv2/fe}/index.js +2 -2
  10. package/lib/{antv2 → cjs/antv2}/hr/adapter.js +6 -6
  11. package/lib/{antv2 → cjs/antv2}/hr/index.js +2 -2
  12. package/lib/cjs/antv2/index.js +33 -0
  13. package/lib/{antv2 → cjs/antv2}/pwr/adapter.js +20 -31
  14. package/lib/{antv2/fe → cjs/antv2/pwr}/index.js +2 -2
  15. package/lib/{antv2 → cjs/antv2}/sc/adapter.js +6 -6
  16. package/lib/cjs/antv2/sc/index.js +7 -0
  17. package/lib/{antv2 → cjs/antv2}/spd/adapter.js +6 -6
  18. package/lib/cjs/antv2/spd/index.js +7 -0
  19. package/lib/{base → cjs/base}/adpater.js +65 -71
  20. package/lib/cjs/ble/base/adapter.js +404 -0
  21. package/lib/{ble → cjs/ble}/base/interface.js +270 -298
  22. package/lib/cjs/ble/base/peripheral.js +412 -0
  23. package/lib/cjs/ble/base/sensor.js +147 -0
  24. package/lib/{ble → cjs/ble}/bindings/index.js +2 -2
  25. package/lib/{ble → cjs/ble}/bindings/linux.js +3 -0
  26. package/lib/cjs/ble/bindings/mock.js +113 -0
  27. package/lib/{ble → cjs/ble}/bindings/types.js +11 -2
  28. package/lib/{ble → cjs/ble}/characteristics/csc/features.js +2 -2
  29. package/lib/{ble → cjs/ble}/characteristics/csc/measurement.js +9 -8
  30. package/lib/cjs/ble/cp/adapter.js +91 -0
  31. package/lib/{ble → cjs/ble}/cp/index.js +4 -4
  32. package/lib/{ble → cjs/ble}/cp/sensor.js +20 -23
  33. package/lib/cjs/ble/csc/adapter.js +55 -0
  34. package/lib/{ble → cjs/ble}/csc/index.js +3 -3
  35. package/lib/cjs/ble/csc/sensor.js +58 -0
  36. package/lib/{ble → cjs/ble}/factories/adapter-factory.js +12 -9
  37. package/lib/{ble → cjs/ble}/factories/index.js +2 -2
  38. package/lib/{ble → cjs/ble}/factories/interface-factory.js +2 -3
  39. package/lib/cjs/ble/fm/adapter.js +355 -0
  40. package/lib/{ble → cjs/ble}/fm/index.js +7 -7
  41. package/lib/cjs/ble/fm/sensor.js +494 -0
  42. package/lib/{ble → cjs/ble}/hr/adapter.js +9 -9
  43. package/lib/{ble → cjs/ble}/hr/index.js +4 -4
  44. package/lib/{ble → cjs/ble}/hr/mock.js +10 -9
  45. package/lib/{ble → cjs/ble}/hr/sensor.js +14 -12
  46. package/lib/cjs/ble/index.js +46 -0
  47. package/lib/cjs/ble/tacx/adapter.js +54 -0
  48. package/lib/{ble → cjs/ble}/tacx/index.js +4 -4
  49. package/lib/{ble → cjs/ble}/tacx/sensor.js +171 -193
  50. package/lib/cjs/ble/wahoo/adapter.js +36 -0
  51. package/lib/{ble → cjs/ble}/wahoo/index.js +4 -4
  52. package/lib/cjs/ble/wahoo/sensor.js +345 -0
  53. package/lib/cjs/ble/zwift/play/adapter.js +57 -0
  54. package/lib/{ble → cjs/ble}/zwift/play/index.js +2 -2
  55. package/lib/cjs/ble/zwift/play/sensor.js +512 -0
  56. package/lib/{direct-connect → cjs/direct-connect}/base/interface.js +104 -119
  57. package/lib/cjs/direct-connect/base/peripheral.js +498 -0
  58. package/lib/{features → cjs/direct-connect/bindings}/index.js +1 -1
  59. package/lib/cjs/direct-connect/index.js +22 -0
  60. package/lib/{direct-connect → cjs/direct-connect}/messages/CharacteristicNotification.js +4 -4
  61. package/lib/{direct-connect → cjs/direct-connect}/messages/DiscoverCharacteristics.js +7 -7
  62. package/lib/{direct-connect → cjs/direct-connect}/messages/DiscoverServices.js +7 -7
  63. package/lib/{direct-connect → cjs/direct-connect}/messages/EnableCharacteristicNotifications.js +4 -4
  64. package/lib/{direct-connect → cjs/direct-connect}/messages/ReadCharacteristic.js +4 -4
  65. package/lib/{direct-connect → cjs/direct-connect}/messages/WriteCharacteristic.js +4 -4
  66. package/lib/{direct-connect → cjs/direct-connect}/messages/error.js +5 -4
  67. package/lib/cjs/direct-connect/messages/factory.js +44 -0
  68. package/lib/cjs/direct-connect/messages/index.js +25 -0
  69. package/lib/{direct-connect → cjs/direct-connect}/messages/message.js +17 -14
  70. package/lib/{direct-connect → cjs/direct-connect}/types.js +4 -0
  71. package/lib/cjs/factories/adapters.js +56 -0
  72. package/lib/cjs/factories/interfaces.js +31 -0
  73. package/lib/{features → cjs/features}/features.js +2 -0
  74. package/lib/{direct-connect/bindings → cjs/features}/index.js +1 -1
  75. package/lib/cjs/index.js +51 -0
  76. package/lib/{modes → cjs/modes}/ant-fe-adv-st-mode.js +4 -5
  77. package/lib/cjs/modes/antble-erg.js +28 -0
  78. package/lib/{modes → cjs/modes}/antble-smarttrainer.js +61 -62
  79. package/lib/{modes → cjs/modes}/base.js +13 -8
  80. package/lib/{modes → cjs/modes}/daum-classic-standard.js +5 -4
  81. package/lib/{modes → cjs/modes}/daum-erg.js +21 -19
  82. package/lib/{modes → cjs/modes}/daum-power.js +2 -2
  83. package/lib/{modes → cjs/modes}/daum-premium-standard.js +12 -10
  84. package/lib/{modes → cjs/modes}/daum-smarttrainer.js +34 -30
  85. package/lib/{modes → cjs/modes}/fm-resistance.js +18 -17
  86. package/lib/{modes → cjs/modes}/kettler-erg.js +16 -14
  87. package/lib/{modes → cjs/modes}/power-base.js +24 -28
  88. package/lib/{modes → cjs/modes}/power-meter.js +7 -7
  89. package/lib/{modes → cjs/modes}/simulator.js +17 -17
  90. package/lib/{proto → cjs/proto}/zwift_hub.js +22 -22
  91. package/lib/{serial → cjs/serial}/base/adapter.js +4 -14
  92. package/lib/cjs/serial/base/comms.js +279 -0
  93. package/lib/cjs/serial/base/serial-interface.js +285 -0
  94. package/lib/cjs/serial/base/serial-scanner.js +89 -0
  95. package/lib/{serial → cjs/serial}/base/serialport.js +14 -22
  96. package/lib/cjs/serial/bindings/tcp.js +298 -0
  97. package/lib/cjs/serial/daum/DaumAdapter.js +503 -0
  98. package/lib/cjs/serial/daum/classic/adapter.js +183 -0
  99. package/lib/cjs/serial/daum/classic/comms.js +216 -0
  100. package/lib/{serial → cjs/serial}/daum/classic/mock.js +89 -98
  101. package/lib/cjs/serial/daum/premium/adapter.js +216 -0
  102. package/lib/cjs/serial/daum/premium/comms.js +542 -0
  103. package/lib/{serial → cjs/serial}/daum/premium/mock.js +119 -133
  104. package/lib/{serial → cjs/serial}/daum/premium/utils.js +3 -3
  105. package/lib/{serial → cjs/serial}/daum/types.js +1 -0
  106. package/lib/{serial → cjs/serial}/factories/adapter-factory.js +2 -0
  107. package/lib/{serial → cjs/serial}/index.js +20 -20
  108. package/lib/{serial → cjs/serial}/kettler/comms.js +75 -76
  109. package/lib/cjs/serial/kettler/ergo-racer/adapter.js +529 -0
  110. package/lib/{serial → cjs/serial}/kettler/ergo-racer/mock.js +74 -89
  111. package/lib/{simulator → cjs/simulator}/Simulator.js +75 -82
  112. package/lib/{ble/zwift/click → cjs/types}/index.js +6 -2
  113. package/lib/{utils → cjs/utils}/task.js +16 -27
  114. package/lib/cjs/utils/utils.js +180 -0
  115. package/lib/esm/antv2/base/adapter.js +453 -0
  116. package/lib/esm/antv2/base/binding.js +24 -0
  117. package/lib/esm/antv2/base/interface.js +393 -0
  118. package/lib/esm/antv2/cad/adapter.js +19 -0
  119. package/lib/esm/antv2/cad/index.js +2 -0
  120. package/lib/esm/antv2/consts.js +2 -0
  121. package/lib/esm/antv2/factories/adapter-factory.js +72 -0
  122. package/lib/esm/antv2/factories/index.js +1 -0
  123. package/lib/esm/antv2/factories/sensor-factory.js +20 -0
  124. package/lib/esm/antv2/fe/adapter.js +267 -0
  125. package/lib/esm/antv2/fe/index.js +2 -0
  126. package/lib/esm/antv2/hr/adapter.js +24 -0
  127. package/lib/esm/antv2/hr/index.js +2 -0
  128. package/lib/esm/antv2/index.js +19 -0
  129. package/lib/esm/antv2/pwr/adapter.js +61 -0
  130. package/lib/esm/antv2/pwr/index.js +2 -0
  131. package/lib/esm/antv2/sc/adapter.js +24 -0
  132. package/lib/esm/antv2/sc/index.js +2 -0
  133. package/lib/esm/antv2/spd/adapter.js +19 -0
  134. package/lib/esm/antv2/spd/index.js +2 -0
  135. package/lib/esm/antv2/types.js +1 -0
  136. package/lib/esm/antv2/utils.js +187 -0
  137. package/lib/esm/base/adpater.js +310 -0
  138. package/lib/esm/base/consts.js +6 -0
  139. package/lib/esm/ble/base/adapter.js +398 -0
  140. package/lib/esm/ble/base/interface.js +674 -0
  141. package/lib/esm/ble/base/peripheral.js +408 -0
  142. package/lib/esm/ble/base/sensor.js +143 -0
  143. package/lib/esm/ble/base/types.js +5 -0
  144. package/lib/esm/ble/bindings/index.js +2 -0
  145. package/lib/esm/ble/bindings/linux.js +41 -0
  146. package/lib/esm/ble/bindings/mock.js +108 -0
  147. package/lib/esm/ble/bindings/types.js +95 -0
  148. package/lib/esm/ble/characteristics/csc/features.js +15 -0
  149. package/lib/esm/ble/characteristics/csc/measurement.js +108 -0
  150. package/lib/esm/ble/characteristics/types.js +1 -0
  151. package/lib/esm/ble/consts.js +15 -0
  152. package/lib/esm/ble/cp/adapter.js +85 -0
  153. package/lib/esm/ble/cp/index.js +3 -0
  154. package/lib/{ble/cp/comm.js → esm/ble/cp/sensor.js} +26 -50
  155. package/lib/esm/ble/cp/types.js +1 -0
  156. package/lib/esm/ble/csc/adapter.js +48 -0
  157. package/lib/esm/ble/csc/index.js +3 -0
  158. package/lib/esm/ble/csc/sensor.js +54 -0
  159. package/lib/esm/ble/csc/types.js +1 -0
  160. package/lib/esm/ble/factories/adapter-factory.js +136 -0
  161. package/lib/esm/ble/factories/index.js +2 -0
  162. package/lib/esm/ble/factories/interface-factory.js +13 -0
  163. package/lib/esm/ble/factories/types.js +1 -0
  164. package/lib/esm/ble/fm/adapter.js +349 -0
  165. package/lib/esm/ble/fm/consts.js +61 -0
  166. package/lib/esm/ble/fm/index.js +4 -0
  167. package/lib/esm/ble/fm/sensor.js +491 -0
  168. package/lib/esm/ble/fm/types.js +1 -0
  169. package/lib/esm/ble/hr/adapter.js +34 -0
  170. package/lib/esm/ble/hr/index.js +3 -0
  171. package/lib/esm/ble/hr/mock.js +45 -0
  172. package/lib/esm/ble/hr/sensor.js +52 -0
  173. package/lib/esm/ble/hr/types.js +1 -0
  174. package/lib/esm/ble/index.js +22 -0
  175. package/lib/esm/ble/tacx/adapter.js +48 -0
  176. package/lib/esm/ble/tacx/consts.js +24 -0
  177. package/lib/esm/ble/tacx/index.js +3 -0
  178. package/lib/{ble/tacx/comms.js → esm/ble/tacx/sensor.js} +239 -297
  179. package/lib/esm/ble/tacx/types.js +1 -0
  180. package/lib/esm/ble/types.js +1 -0
  181. package/lib/esm/ble/utils.js +130 -0
  182. package/lib/esm/ble/wahoo/adapter.js +30 -0
  183. package/lib/esm/ble/wahoo/consts.js +4 -0
  184. package/lib/esm/ble/wahoo/index.js +3 -0
  185. package/lib/esm/ble/wahoo/sensor.js +339 -0
  186. package/lib/esm/ble/wahoo/types.js +1 -0
  187. package/lib/esm/ble/zwift/play/adapter.js +50 -0
  188. package/lib/esm/ble/zwift/play/index.js +2 -0
  189. package/lib/esm/ble/zwift/play/sensor.js +508 -0
  190. package/lib/esm/ble/zwift/play/types.js +1 -0
  191. package/lib/esm/direct-connect/base/interface.js +354 -0
  192. package/lib/esm/direct-connect/base/peripheral.js +491 -0
  193. package/lib/esm/direct-connect/bindings/index.js +1 -0
  194. package/lib/esm/direct-connect/bindings/types.js +1 -0
  195. package/lib/esm/direct-connect/consts.js +17 -0
  196. package/lib/esm/direct-connect/index.js +6 -0
  197. package/lib/esm/direct-connect/messages/CharacteristicNotification.js +19 -0
  198. package/lib/esm/direct-connect/messages/DiscoverCharacteristics.js +40 -0
  199. package/lib/esm/direct-connect/messages/DiscoverServices.js +31 -0
  200. package/lib/esm/direct-connect/messages/EnableCharacteristicNotifications.js +31 -0
  201. package/lib/esm/direct-connect/messages/ReadCharacteristic.js +30 -0
  202. package/lib/esm/direct-connect/messages/WriteCharacteristic.js +32 -0
  203. package/lib/esm/direct-connect/messages/error.js +14 -0
  204. package/lib/esm/direct-connect/messages/factory.js +40 -0
  205. package/lib/esm/direct-connect/messages/index.js +9 -0
  206. package/lib/esm/direct-connect/messages/message.js +103 -0
  207. package/lib/esm/direct-connect/types.js +8 -0
  208. package/lib/esm/factories/adapters.js +50 -0
  209. package/lib/esm/factories/interfaces.js +25 -0
  210. package/lib/esm/features/features.js +26 -0
  211. package/lib/esm/features/index.js +1 -0
  212. package/lib/esm/index.js +18 -0
  213. package/lib/esm/modes/ant-fe-adv-st-mode.js +77 -0
  214. package/lib/esm/modes/antble-erg.js +22 -0
  215. package/lib/esm/modes/antble-smarttrainer.js +440 -0
  216. package/lib/esm/modes/base.js +100 -0
  217. package/lib/esm/modes/daum-classic-standard.js +55 -0
  218. package/lib/esm/modes/daum-erg.js +196 -0
  219. package/lib/esm/modes/daum-power.js +6 -0
  220. package/lib/esm/modes/daum-premium-standard.js +70 -0
  221. package/lib/esm/modes/daum-smarttrainer.js +344 -0
  222. package/lib/esm/modes/fm-resistance.js +134 -0
  223. package/lib/esm/modes/kettler-erg.js +129 -0
  224. package/lib/esm/modes/power-base.js +265 -0
  225. package/lib/esm/modes/power-meter.js +33 -0
  226. package/lib/esm/modes/simulator.js +107 -0
  227. package/lib/esm/modes/types.js +70 -0
  228. package/lib/esm/proto/zwift_hub.js +1231 -0
  229. package/lib/esm/serial/base/adapter.js +50 -0
  230. package/lib/esm/serial/base/comms.js +276 -0
  231. package/lib/esm/serial/base/serial-interface.js +279 -0
  232. package/lib/esm/serial/base/serial-scanner.js +82 -0
  233. package/lib/esm/serial/base/serialport.js +74 -0
  234. package/lib/esm/serial/bindings/tcp.js +287 -0
  235. package/lib/esm/serial/daum/DaumAdapter.js +497 -0
  236. package/lib/esm/serial/daum/classic/adapter.js +177 -0
  237. package/lib/esm/serial/daum/classic/comms.js +210 -0
  238. package/lib/esm/serial/daum/classic/consts.js +2 -0
  239. package/lib/esm/serial/daum/classic/mock.js +389 -0
  240. package/lib/esm/serial/daum/classic/types.js +1 -0
  241. package/lib/esm/serial/daum/classic/utils.js +96 -0
  242. package/lib/esm/serial/daum/premium/adapter.js +210 -0
  243. package/lib/esm/serial/daum/premium/comms.js +536 -0
  244. package/lib/esm/serial/daum/premium/consts.js +6 -0
  245. package/lib/esm/serial/daum/premium/mock.js +398 -0
  246. package/lib/esm/serial/daum/premium/types.js +25 -0
  247. package/lib/esm/serial/daum/premium/utils.js +328 -0
  248. package/lib/esm/serial/daum/types.js +9 -0
  249. package/lib/esm/serial/factories/adapter-factory.js +29 -0
  250. package/lib/esm/serial/index.js +12 -0
  251. package/lib/esm/serial/kettler/comms.js +276 -0
  252. package/lib/esm/serial/kettler/ergo-racer/adapter.js +523 -0
  253. package/lib/esm/serial/kettler/ergo-racer/mock.js +195 -0
  254. package/lib/esm/serial/kettler/types.js +1 -0
  255. package/lib/esm/serial/types.js +6 -0
  256. package/lib/esm/simulator/Simulator.js +186 -0
  257. package/lib/esm/types/adapter.js +1 -0
  258. package/lib/esm/types/capabilities.js +9 -0
  259. package/lib/esm/types/data.js +1 -0
  260. package/lib/esm/types/device.js +10 -0
  261. package/lib/esm/types/index.js +6 -0
  262. package/lib/esm/types/interface.js +1 -0
  263. package/lib/esm/types/user.js +6 -0
  264. package/lib/esm/utils/calculations.js +151 -0
  265. package/lib/esm/utils/task.js +121 -0
  266. package/lib/esm/utils/utils.js +167 -0
  267. package/lib/{antv2 → types/antv2}/base/adapter.d.ts +6 -9
  268. package/lib/{antv2 → types/antv2}/base/binding.d.ts +1 -1
  269. package/lib/{antv2 → types/antv2}/base/interface.d.ts +4 -4
  270. package/lib/{antv2 → types/antv2}/cad/adapter.d.ts +2 -2
  271. package/lib/types/antv2/cad/index.d.ts +2 -0
  272. package/lib/{antv2 → types/antv2}/factories/adapter-factory.d.ts +2 -2
  273. package/lib/types/antv2/factories/index.d.ts +1 -0
  274. package/lib/{antv2 → types/antv2}/fe/adapter.d.ts +4 -4
  275. package/lib/types/antv2/fe/index.d.ts +2 -0
  276. package/lib/{antv2 → types/antv2}/hr/adapter.d.ts +2 -2
  277. package/lib/types/antv2/hr/index.d.ts +2 -0
  278. package/lib/types/antv2/index.d.ts +12 -0
  279. package/lib/{antv2 → types/antv2}/pwr/adapter.d.ts +4 -4
  280. package/lib/types/antv2/pwr/index.d.ts +2 -0
  281. package/lib/{antv2 → types/antv2}/sc/adapter.d.ts +3 -3
  282. package/lib/types/antv2/sc/index.d.ts +2 -0
  283. package/lib/{antv2 → types/antv2}/spd/adapter.d.ts +3 -3
  284. package/lib/types/antv2/spd/index.d.ts +2 -0
  285. package/lib/{antv2 → types/antv2}/types.d.ts +2 -2
  286. package/lib/{antv2 → types/antv2}/utils.d.ts +1 -1
  287. package/lib/{base → types/base}/adpater.d.ts +3 -3
  288. package/lib/{base → types/base}/consts.d.ts +1 -1
  289. package/lib/{ble → types/ble}/base/adapter.d.ts +8 -9
  290. package/lib/{ble → types/ble}/base/interface.d.ts +8 -8
  291. package/lib/{ble → types/ble}/base/peripheral.d.ts +2 -2
  292. package/lib/{ble → types/ble}/base/sensor.d.ts +3 -3
  293. package/lib/{ble → types/ble}/base/types.d.ts +2 -2
  294. package/lib/types/ble/bindings/index.d.ts +2 -0
  295. package/lib/{ble → types/ble}/bindings/linux.d.ts +1 -1
  296. package/lib/{ble → types/ble}/bindings/mock.d.ts +1 -1
  297. package/lib/{ble → types/ble}/bindings/types.d.ts +2 -2
  298. package/lib/{ble → types/ble}/characteristics/csc/features.d.ts +1 -1
  299. package/lib/{ble → types/ble}/characteristics/csc/measurement.d.ts +2 -2
  300. package/lib/{ble → types/ble}/cp/adapter.d.ts +7 -7
  301. package/lib/types/ble/cp/index.d.ts +4 -0
  302. package/lib/{ble → types/ble}/cp/sensor.d.ts +4 -4
  303. package/lib/{ble → types/ble}/csc/adapter.d.ts +6 -6
  304. package/lib/types/ble/csc/index.d.ts +3 -0
  305. package/lib/{ble → types/ble}/csc/sensor.d.ts +6 -6
  306. package/lib/{ble → types/ble}/csc/types.d.ts +1 -1
  307. package/lib/{ble → types/ble}/factories/adapter-factory.d.ts +6 -6
  308. package/lib/types/ble/factories/index.d.ts +2 -0
  309. package/lib/{ble → types/ble}/factories/interface-factory.d.ts +2 -2
  310. package/lib/{ble → types/ble}/factories/types.d.ts +5 -5
  311. package/lib/{ble → types/ble}/fm/adapter.d.ts +9 -9
  312. package/lib/types/ble/fm/index.d.ts +5 -0
  313. package/lib/{ble → types/ble}/fm/sensor.d.ts +4 -4
  314. package/lib/{ble → types/ble}/hr/adapter.d.ts +6 -6
  315. package/lib/types/ble/hr/index.d.ts +4 -0
  316. package/lib/{ble → types/ble}/hr/mock.d.ts +1 -1
  317. package/lib/{ble → types/ble}/hr/sensor.d.ts +4 -4
  318. package/lib/types/ble/index.d.ts +10 -0
  319. package/lib/{ble → types/ble}/tacx/adapter.d.ts +4 -4
  320. package/lib/types/ble/tacx/index.d.ts +4 -0
  321. package/lib/{ble → types/ble}/tacx/sensor.d.ts +6 -6
  322. package/lib/{ble → types/ble}/types.d.ts +1 -1
  323. package/lib/{ble → types/ble}/utils.d.ts +2 -2
  324. package/lib/{ble → types/ble}/wahoo/adapter.d.ts +4 -4
  325. package/lib/types/ble/wahoo/index.d.ts +4 -0
  326. package/lib/{ble → types/ble}/wahoo/sensor.d.ts +5 -5
  327. package/lib/{ble → types/ble}/zwift/play/adapter.d.ts +6 -6
  328. package/lib/types/ble/zwift/play/index.d.ts +2 -0
  329. package/lib/{ble → types/ble}/zwift/play/sensor.d.ts +6 -6
  330. package/lib/{direct-connect → types/direct-connect}/base/interface.d.ts +9 -9
  331. package/lib/{direct-connect → types/direct-connect}/base/peripheral.d.ts +6 -6
  332. package/lib/types/direct-connect/bindings/index.d.ts +1 -0
  333. package/lib/{direct-connect → types/direct-connect}/bindings/types.d.ts +2 -2
  334. package/lib/types/direct-connect/index.d.ts +3 -0
  335. package/lib/{direct-connect → types/direct-connect}/messages/CharacteristicNotification.d.ts +2 -2
  336. package/lib/{direct-connect → types/direct-connect}/messages/DiscoverCharacteristics.d.ts +3 -3
  337. package/lib/{direct-connect → types/direct-connect}/messages/DiscoverServices.d.ts +2 -2
  338. package/lib/{direct-connect → types/direct-connect}/messages/EnableCharacteristicNotifications.d.ts +2 -2
  339. package/lib/{direct-connect → types/direct-connect}/messages/ReadCharacteristic.d.ts +2 -2
  340. package/lib/{direct-connect → types/direct-connect}/messages/WriteCharacteristic.d.ts +2 -2
  341. package/lib/{direct-connect → types/direct-connect}/messages/factory.d.ts +1 -1
  342. package/lib/types/direct-connect/messages/index.d.ts +9 -0
  343. package/lib/{direct-connect → types/direct-connect}/messages/message.d.ts +1 -1
  344. package/lib/{direct-connect → types/direct-connect}/types.d.ts +1 -1
  345. package/lib/{factories → types/factories}/adapters.d.ts +2 -2
  346. package/lib/{factories → types/factories}/interfaces.d.ts +5 -5
  347. package/lib/types/features/index.d.ts +1 -0
  348. package/lib/types/index.d.ts +22 -6
  349. package/lib/{modes → types/modes}/ant-fe-adv-st-mode.d.ts +4 -4
  350. package/lib/{modes → types/modes}/antble-erg.d.ts +3 -3
  351. package/lib/{modes → types/modes}/antble-smarttrainer.d.ts +4 -4
  352. package/lib/{modes → types/modes}/base.d.ts +2 -2
  353. package/lib/{modes → types/modes}/daum-classic-standard.d.ts +4 -4
  354. package/lib/{modes → types/modes}/daum-erg.d.ts +3 -4
  355. package/lib/{modes → types/modes}/daum-power.d.ts +2 -2
  356. package/lib/{modes → types/modes}/daum-premium-standard.d.ts +4 -4
  357. package/lib/{modes → types/modes}/daum-smarttrainer.d.ts +4 -4
  358. package/lib/{modes → types/modes}/fm-resistance.d.ts +4 -4
  359. package/lib/{modes → types/modes}/kettler-erg.d.ts +3 -4
  360. package/lib/{modes → types/modes}/power-base.d.ts +3 -3
  361. package/lib/{modes → types/modes}/power-meter.d.ts +4 -4
  362. package/lib/{modes → types/modes}/simulator.d.ts +4 -7
  363. package/lib/{modes → types/modes}/types.d.ts +1 -1
  364. package/lib/{serial → types/serial}/base/adapter.d.ts +4 -4
  365. package/lib/{serial → types/serial}/base/comms.d.ts +3 -3
  366. package/lib/{serial → types/serial}/base/serial-interface.d.ts +3 -3
  367. package/lib/{serial → types/serial}/base/serial-scanner.d.ts +2 -2
  368. package/lib/{serial → types/serial}/base/serialport.d.ts +3 -4
  369. package/lib/{serial → types/serial}/bindings/tcp.d.ts +3 -3
  370. package/lib/{serial → types/serial}/daum/DaumAdapter.d.ts +7 -7
  371. package/lib/{serial → types/serial}/daum/classic/adapter.d.ts +5 -5
  372. package/lib/{serial → types/serial}/daum/classic/comms.d.ts +5 -5
  373. package/lib/{serial → types/serial}/daum/classic/mock.d.ts +2 -2
  374. package/lib/{serial → types/serial}/daum/classic/types.d.ts +3 -3
  375. package/lib/{serial → types/serial}/daum/classic/utils.d.ts +1 -1
  376. package/lib/{serial → types/serial}/daum/premium/adapter.d.ts +5 -5
  377. package/lib/{serial → types/serial}/daum/premium/comms.d.ts +5 -5
  378. package/lib/{serial → types/serial}/daum/premium/mock.d.ts +1 -1
  379. package/lib/{serial → types/serial}/daum/premium/types.d.ts +3 -3
  380. package/lib/{serial → types/serial}/daum/premium/utils.d.ts +2 -2
  381. package/lib/{serial → types/serial}/factories/adapter-factory.d.ts +3 -3
  382. package/lib/types/serial/index.d.ts +12 -0
  383. package/lib/{serial → types/serial}/kettler/comms.d.ts +3 -3
  384. package/lib/{serial → types/serial}/kettler/ergo-racer/adapter.d.ts +7 -8
  385. package/lib/{serial → types/serial}/kettler/ergo-racer/mock.d.ts +3 -3
  386. package/lib/{serial → types/serial}/types.d.ts +2 -2
  387. package/lib/{simulator → types/simulator}/Simulator.d.ts +4 -4
  388. package/lib/types/{adapter.d.ts → types/adapter.d.ts} +6 -6
  389. package/lib/types/{device.d.ts → types/device.d.ts} +3 -3
  390. package/lib/types/types/index.d.ts +6 -0
  391. package/lib/types/{interface.d.ts → types/interface.d.ts} +2 -2
  392. package/lib/{utils → types/utils}/task.d.ts +2 -2
  393. package/package.json +57 -65
  394. package/lib/antv2/base/adapter.js +0 -485
  395. package/lib/antv2/base/interface.js +0 -420
  396. package/lib/antv2/cad/index.d.ts +0 -2
  397. package/lib/antv2/factories/index.d.ts +0 -1
  398. package/lib/antv2/fe/adapter.js +0 -306
  399. package/lib/antv2/fe/index.d.ts +0 -2
  400. package/lib/antv2/hr/index.d.ts +0 -2
  401. package/lib/antv2/index.d.ts +0 -12
  402. package/lib/antv2/index.js +0 -33
  403. package/lib/antv2/pwr/index.d.ts +0 -2
  404. package/lib/antv2/sc/index.d.ts +0 -2
  405. package/lib/antv2/sc/index.js +0 -7
  406. package/lib/antv2/spd/index.d.ts +0 -2
  407. package/lib/antv2/spd/index.js +0 -7
  408. package/lib/ble/adapter-factory.d.ts +0 -34
  409. package/lib/ble/adapter-factory.js +0 -110
  410. package/lib/ble/base/adapter.js +0 -453
  411. package/lib/ble/base/comms-utils.d.ts +0 -7
  412. package/lib/ble/base/comms-utils.js +0 -90
  413. package/lib/ble/base/comms.d.ts +0 -75
  414. package/lib/ble/base/comms.js +0 -599
  415. package/lib/ble/base/peripheral.js +0 -449
  416. package/lib/ble/base/sensor.js +0 -169
  417. package/lib/ble/bindings/index.d.ts +0 -2
  418. package/lib/ble/bindings/mock.js +0 -120
  419. package/lib/ble/ble-interface.d.ts +0 -84
  420. package/lib/ble/ble-interface.js +0 -622
  421. package/lib/ble/ble-peripheral.d.ts +0 -39
  422. package/lib/ble/ble-peripheral.js +0 -252
  423. package/lib/ble/cp/adapter.js +0 -108
  424. package/lib/ble/cp/comm.d.ts +0 -30
  425. package/lib/ble/cp/index.d.ts +0 -4
  426. package/lib/ble/csc/adapter.js +0 -66
  427. package/lib/ble/csc/index.d.ts +0 -3
  428. package/lib/ble/csc/sensor.js +0 -67
  429. package/lib/ble/elite/adapter.d.ts +0 -21
  430. package/lib/ble/elite/adapter.js +0 -118
  431. package/lib/ble/elite/comms.d.ts +0 -31
  432. package/lib/ble/elite/comms.js +0 -127
  433. package/lib/ble/elite/index.d.ts +0 -3
  434. package/lib/ble/elite/index.js +0 -10
  435. package/lib/ble/factories/index.d.ts +0 -2
  436. package/lib/ble/fm/adapter.js +0 -380
  437. package/lib/ble/fm/comms.d.ts +0 -49
  438. package/lib/ble/fm/comms.js +0 -506
  439. package/lib/ble/fm/index.d.ts +0 -5
  440. package/lib/ble/fm/sensor.js +0 -531
  441. package/lib/ble/hr/comm.d.ts +0 -19
  442. package/lib/ble/hr/comm.js +0 -65
  443. package/lib/ble/hr/index.d.ts +0 -4
  444. package/lib/ble/index.d.ts +0 -10
  445. package/lib/ble/index.js +0 -46
  446. package/lib/ble/peripheral-cache.d.ts +0 -45
  447. package/lib/ble/peripheral-cache.js +0 -109
  448. package/lib/ble/tacx/adapter.js +0 -68
  449. package/lib/ble/tacx/comms.d.ts +0 -59
  450. package/lib/ble/tacx/index.d.ts +0 -4
  451. package/lib/ble/wahoo/adapter.js +0 -47
  452. package/lib/ble/wahoo/comms.d.ts +0 -64
  453. package/lib/ble/wahoo/comms.js +0 -399
  454. package/lib/ble/wahoo/index.d.ts +0 -4
  455. package/lib/ble/wahoo/sensor.js +0 -372
  456. package/lib/ble/zwift/click/adapter.d.ts +0 -19
  457. package/lib/ble/zwift/click/adapter.js +0 -74
  458. package/lib/ble/zwift/click/index.d.ts +0 -2
  459. package/lib/ble/zwift/click/sensor.d.ts +0 -40
  460. package/lib/ble/zwift/click/sensor.js +0 -221
  461. package/lib/ble/zwift/play/adapter.js +0 -73
  462. package/lib/ble/zwift/play/helperfactory.d.ts +0 -7
  463. package/lib/ble/zwift/play/helperfactory.js +0 -17
  464. package/lib/ble/zwift/play/index.d.ts +0 -2
  465. package/lib/ble/zwift/play/protohelper.d.ts +0 -4
  466. package/lib/ble/zwift/play/protohelper.js +0 -11
  467. package/lib/ble/zwift/play/sensor.js +0 -533
  468. package/lib/direct-connect/base/comms.d.ts +0 -3
  469. package/lib/direct-connect/base/comms.js +0 -7
  470. package/lib/direct-connect/base/peripheral.js +0 -543
  471. package/lib/direct-connect/base/sensor.d.ts +0 -3
  472. package/lib/direct-connect/base/sensor.js +0 -7
  473. package/lib/direct-connect/bindings/index.d.ts +0 -1
  474. package/lib/direct-connect/index.d.ts +0 -3
  475. package/lib/direct-connect/index.js +0 -22
  476. package/lib/direct-connect/messages/factory.js +0 -44
  477. package/lib/direct-connect/messages/index.d.ts +0 -9
  478. package/lib/direct-connect/messages/index.js +0 -25
  479. package/lib/direct-connect/utils.d.ts +0 -5
  480. package/lib/direct-connect/utils.js +0 -73
  481. package/lib/factories/adapters.js +0 -56
  482. package/lib/factories/index.d.ts +0 -3
  483. package/lib/factories/index.js +0 -10
  484. package/lib/factories/interfaces.js +0 -30
  485. package/lib/features/index.d.ts +0 -1
  486. package/lib/index.d.ts +0 -17
  487. package/lib/index.js +0 -38
  488. package/lib/modes/antble-erg.js +0 -28
  489. package/lib/proto/org/cagnulen/qdomyoszwift/zwift_hub_pb.d.ts +0 -156
  490. package/lib/proto/org/cagnulen/qdomyoszwift/zwift_hub_pb.js +0 -59
  491. package/lib/serial/base/comms.js +0 -304
  492. package/lib/serial/base/serial-interface.js +0 -296
  493. package/lib/serial/base/serial-scanner.js +0 -95
  494. package/lib/serial/bindings/tcp.js +0 -309
  495. package/lib/serial/daum/DaumAdapter.js +0 -556
  496. package/lib/serial/daum/classic/adapter.js +0 -196
  497. package/lib/serial/daum/classic/comms.js +0 -263
  498. package/lib/serial/daum/premium/adapter.js +0 -238
  499. package/lib/serial/daum/premium/comms.js +0 -617
  500. package/lib/serial/index.d.ts +0 -12
  501. package/lib/serial/kettler/ergo-racer/adapter.js +0 -569
  502. package/lib/types/index.js +0 -22
  503. package/lib/utils/operation.d.ts +0 -17
  504. package/lib/utils/operation.js +0 -20
  505. package/lib/utils/utils.js +0 -196
  506. /package/lib/{antv2 → cjs/antv2}/base/binding.js +0 -0
  507. /package/lib/{antv2 → cjs/antv2}/consts.js +0 -0
  508. /package/lib/{antv2 → cjs/antv2}/types.js +0 -0
  509. /package/lib/{antv2 → cjs/antv2}/utils.js +0 -0
  510. /package/lib/{base → cjs/base}/consts.js +0 -0
  511. /package/lib/{ble → cjs/ble}/base/types.js +0 -0
  512. /package/lib/{ble → cjs/ble}/characteristics/types.js +0 -0
  513. /package/lib/{ble → cjs/ble}/consts.js +0 -0
  514. /package/lib/{ble → cjs/ble}/cp/types.js +0 -0
  515. /package/lib/{ble → cjs/ble}/csc/types.js +0 -0
  516. /package/lib/{ble → cjs/ble}/factories/types.js +0 -0
  517. /package/lib/{ble → cjs/ble}/fm/consts.js +0 -0
  518. /package/lib/{ble → cjs/ble}/fm/types.js +0 -0
  519. /package/lib/{ble → cjs/ble}/hr/types.js +0 -0
  520. /package/lib/{ble → cjs/ble}/tacx/consts.js +0 -0
  521. /package/lib/{ble → cjs/ble}/tacx/types.js +0 -0
  522. /package/lib/{ble → cjs/ble}/types.js +0 -0
  523. /package/lib/{ble → cjs/ble}/utils.js +0 -0
  524. /package/lib/{ble → cjs/ble}/wahoo/consts.js +0 -0
  525. /package/lib/{ble → cjs/ble}/wahoo/types.js +0 -0
  526. /package/lib/{ble → cjs/ble}/zwift/play/types.js +0 -0
  527. /package/lib/{direct-connect → cjs/direct-connect}/bindings/types.js +0 -0
  528. /package/lib/{direct-connect → cjs/direct-connect}/consts.js +0 -0
  529. /package/lib/{modes → cjs/modes}/types.js +0 -0
  530. /package/lib/{serial → cjs/serial}/daum/classic/consts.js +0 -0
  531. /package/lib/{serial → cjs/serial}/daum/classic/types.js +0 -0
  532. /package/lib/{serial → cjs/serial}/daum/classic/utils.js +0 -0
  533. /package/lib/{serial → cjs/serial}/daum/premium/consts.js +0 -0
  534. /package/lib/{serial → cjs/serial}/daum/premium/types.js +0 -0
  535. /package/lib/{serial → cjs/serial}/kettler/types.js +0 -0
  536. /package/lib/{serial → cjs/serial}/types.js +0 -0
  537. /package/lib/{types → cjs/types}/adapter.js +0 -0
  538. /package/lib/{types → cjs/types}/capabilities.js +0 -0
  539. /package/lib/{types → cjs/types}/data.js +0 -0
  540. /package/lib/{types → cjs/types}/device.js +0 -0
  541. /package/lib/{types → cjs/types}/interface.js +0 -0
  542. /package/lib/{types → cjs/types}/user.js +0 -0
  543. /package/lib/{utils → cjs/utils}/calculations.js +0 -0
  544. /package/lib/{antv2 → types/antv2}/consts.d.ts +0 -0
  545. /package/lib/{antv2 → types/antv2}/factories/sensor-factory.d.ts +0 -0
  546. /package/lib/{ble → types/ble}/characteristics/types.d.ts +0 -0
  547. /package/lib/{ble → types/ble}/consts.d.ts +0 -0
  548. /package/lib/{ble → types/ble}/cp/types.d.ts +0 -0
  549. /package/lib/{ble → types/ble}/fm/consts.d.ts +0 -0
  550. /package/lib/{ble → types/ble}/fm/types.d.ts +0 -0
  551. /package/lib/{ble → types/ble}/hr/types.d.ts +0 -0
  552. /package/lib/{ble → types/ble}/tacx/consts.d.ts +0 -0
  553. /package/lib/{ble → types/ble}/tacx/types.d.ts +0 -0
  554. /package/lib/{ble → types/ble}/wahoo/consts.d.ts +0 -0
  555. /package/lib/{ble → types/ble}/wahoo/types.d.ts +0 -0
  556. /package/lib/{ble → types/ble}/zwift/play/types.d.ts +0 -0
  557. /package/lib/{direct-connect → types/direct-connect}/consts.d.ts +0 -0
  558. /package/lib/{direct-connect → types/direct-connect}/messages/error.d.ts +0 -0
  559. /package/lib/{features → types/features}/features.d.ts +0 -0
  560. /package/lib/{proto → types/proto}/zwift_hub.d.ts +0 -0
  561. /package/lib/{serial → types/serial}/daum/classic/consts.d.ts +0 -0
  562. /package/lib/{serial → types/serial}/daum/premium/consts.d.ts +0 -0
  563. /package/lib/{serial → types/serial}/daum/types.d.ts +0 -0
  564. /package/lib/{serial → types/serial}/kettler/types.d.ts +0 -0
  565. /package/lib/types/{capabilities.d.ts → types/capabilities.d.ts} +0 -0
  566. /package/lib/types/{data.d.ts → types/data.d.ts} +0 -0
  567. /package/lib/types/{user.d.ts → types/user.d.ts} +0 -0
  568. /package/lib/{utils → types/utils}/calculations.d.ts +0 -0
  569. /package/lib/{utils → types/utils}/utils.d.ts +0 -0
@@ -0,0 +1,459 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const interface_js_1 = __importDefault(require("./interface.js"));
7
+ const adpater_js_1 = __importDefault(require("../../base/adpater.js"));
8
+ const types_js_1 = require("../types.js");
9
+ const index_js_1 = require("../../types/index.js");
10
+ const utils_js_1 = require("../../utils/utils.js");
11
+ const utils_js_2 = require("../utils.js");
12
+ const consts_js_1 = require("../consts.js");
13
+ const sensor_factory_js_1 = __importDefault(require("../factories/sensor-factory.js"));
14
+ const gd_eventlog_1 = require("gd-eventlog");
15
+ const node_events_1 = __importDefault(require("node:events"));
16
+ const INTERFACE_NAME = 'ant';
17
+ const MAX_RETRIES = 3;
18
+ class AntAdapter extends adpater_js_1.default {
19
+ sensor;
20
+ deviceData;
21
+ channel;
22
+ ant;
23
+ userSettings;
24
+ bikeSettings;
25
+ ivDataTimeout;
26
+ lastDataTS;
27
+ dataMsgCount;
28
+ ivWaitForData;
29
+ promiseWaitForData;
30
+ sensorConnected;
31
+ startStatus;
32
+ startupRetryPause = 1000;
33
+ internalEmitter = new node_events_1.default();
34
+ constructor(settings, props) {
35
+ super(settings, props);
36
+ const profile = this.getProfileName();
37
+ if (settings.protocol && settings.profile !== this.getLegacyProfileName())
38
+ throw new Error('Incorrect Profile');
39
+ if (!settings.protocol && settings.profile !== this.getProfileName())
40
+ throw new Error('Incorrect Profile');
41
+ const antSettings = this.settings;
42
+ if ((0, types_js_1.isLegacyProfile)(antSettings.profile))
43
+ antSettings.profile = (0, utils_js_2.mapLegacyProfile)(antSettings.profile);
44
+ if (this.settings.interface !== 'ant')
45
+ throw new Error('Incorrect interface');
46
+ this.sensor = this.createSensor(settings);
47
+ this.sensorConnected = false;
48
+ this.deviceData = {
49
+ DeviceID: Number(settings.deviceID)
50
+ };
51
+ this.data = {};
52
+ this.dataMsgCount = 0;
53
+ this.logger = new gd_eventlog_1.EventLogger(`Ant+${profile}`);
54
+ this.updateFrequency = consts_js_1.DEFAULT_UPDATE_FREQUENCY;
55
+ this.channel = undefined;
56
+ this.ant = interface_js_1.default.getInstance();
57
+ if (this.isDebugEnabled()) {
58
+ this.ant.setLogger(this);
59
+ }
60
+ if (this.getStaticCapabilities())
61
+ this.capabilities = this.getStaticCapabilities();
62
+ }
63
+ getProfileName() {
64
+ const C = this.constructor;
65
+ return C['ANT_PROFILE_NAME'];
66
+ }
67
+ getLegacyProfileName() {
68
+ const C = this.constructor;
69
+ return C['INCYCLIST_PROFILE_NAME'];
70
+ }
71
+ getStaticCapabilities() {
72
+ const C = this.constructor;
73
+ return C['CAPABILITIES'];
74
+ }
75
+ createSensor(settings) {
76
+ return sensor_factory_js_1.default.create(this.getProfileName(), Number(settings.deviceID));
77
+ }
78
+ isEqual(settings) {
79
+ const as = this.settings;
80
+ if (as.interface !== settings.interface)
81
+ return false;
82
+ if (Number(as.deviceID) !== Number(settings.deviceID) || as.profile !== settings.profile)
83
+ return false;
84
+ return true;
85
+ }
86
+ getDefaultReconnectDelay() {
87
+ return this.startupRetryPause;
88
+ }
89
+ async connect() {
90
+ const connected = await interface_js_1.default.getInstance().connect();
91
+ return connected;
92
+ }
93
+ async close() {
94
+ return true;
95
+ }
96
+ resetData() {
97
+ this.dataMsgCount = 0;
98
+ const { DeviceID } = this.deviceData;
99
+ this.deviceData = { DeviceID };
100
+ this.data = {};
101
+ this.lastDataTS = undefined;
102
+ }
103
+ isSame(device) {
104
+ if (!(device instanceof AntAdapter))
105
+ return false;
106
+ const adapter = device;
107
+ return (adapter.getID() === this.getID() && adapter.getProfile() === this.getProfile());
108
+ }
109
+ hasData() {
110
+ return this.dataMsgCount > 0;
111
+ }
112
+ mapData(deviceData) {
113
+ throw new Error('message not implemented');
114
+ }
115
+ transformData(data, deviceData) {
116
+ throw new Error('message not implemented');
117
+ }
118
+ mapToAdapterData(deviceData) {
119
+ throw new Error('message not implemented');
120
+ }
121
+ refreshDeviceData() {
122
+ if (this.isStopped() || this.isPaused())
123
+ return;
124
+ const logData = this.getLogData(this.deviceData, ['PairedDevices', 'RawData', '_RawData']);
125
+ this.logEvent({ message: 'refreshDeviceData', data: logData, paused: this.paused, started: this.started, canEmit: this.canEmitData() });
126
+ if (this.isControllable()) {
127
+ let incyclistData = this.mapData(this.deviceData);
128
+ incyclistData = this.getCyclingMode().updateData(incyclistData);
129
+ this.transformData(incyclistData, this.deviceData);
130
+ }
131
+ else {
132
+ this.mapToAdapterData(this.deviceData);
133
+ }
134
+ this.emitData(this.data);
135
+ }
136
+ onDeviceData(deviceData) {
137
+ this.dataMsgCount++;
138
+ this.lastDataTS = Date.now();
139
+ try {
140
+ const { ManId } = this.deviceData;
141
+ this.deviceData = Object.assign({}, deviceData);
142
+ if (!ManId && deviceData.ManId) {
143
+ this.emit('device-info', this.getSettings(), { manufacturer: (0, utils_js_2.getBrand)(deviceData.ManId) });
144
+ }
145
+ const logData = this.getLogData(deviceData, ['PairedDevices', 'RawData', '_RawData']);
146
+ this.logEvent({ message: 'onDeviceData', device: this.getName(), interface: this.getInterface(), data: logData, paused: this.paused, started: this.started, canEmit: this.canEmitData() });
147
+ if (this.isStopped() || !this.canEmitData())
148
+ return;
149
+ if (this.isControllable()) {
150
+ let incyclistData = this.mapData(deviceData);
151
+ incyclistData = this.getCyclingMode().updateData(incyclistData);
152
+ this.transformData(incyclistData, deviceData);
153
+ }
154
+ else {
155
+ this.mapToAdapterData(deviceData);
156
+ }
157
+ this.emitData(this.data);
158
+ }
159
+ catch (err) {
160
+ this.logEvent({ message: 'error', fn: 'onDeviceData()', error: err.message || err, stack: err.stack });
161
+ }
162
+ }
163
+ isWaitingForData() {
164
+ return this.promiseWaitForData !== undefined && this.promiseWaitForData !== null;
165
+ }
166
+ async _wait() {
167
+ const res = new Promise((resolve) => {
168
+ const iv = setInterval(() => {
169
+ if (this.hasData()) {
170
+ clearInterval(iv);
171
+ resolve(true);
172
+ }
173
+ if (this.promiseWaitForData === undefined || this.promiseWaitForData === null || this.stopped) {
174
+ resolve(false);
175
+ clearInterval(iv);
176
+ }
177
+ }, 10);
178
+ });
179
+ return res;
180
+ }
181
+ async waitForData(timeout) {
182
+ if (this.hasData()) {
183
+ return true;
184
+ }
185
+ const tsStart = Date.now();
186
+ if (this.promiseWaitForData !== undefined && this.promiseWaitForData !== null) {
187
+ let hasData = false;
188
+ try {
189
+ hasData = await this.promiseWaitForData;
190
+ }
191
+ catch { }
192
+ if (hasData || Date.now() > tsStart + timeout)
193
+ return hasData;
194
+ }
195
+ try {
196
+ this.promiseWaitForData = (0, utils_js_1.runWithTimeout)(this._wait(), timeout);
197
+ const hasData = await this.promiseWaitForData;
198
+ this.promiseWaitForData = null;
199
+ return hasData;
200
+ }
201
+ catch {
202
+ this.promiseWaitForData = null;
203
+ return false;
204
+ }
205
+ }
206
+ getID() {
207
+ const id = this.deviceData?.DeviceID ?? this.sensor?.getDeviceID();
208
+ return id?.toString();
209
+ }
210
+ getName() {
211
+ if (this.settings.name)
212
+ return this.settings.name;
213
+ const deviceID = this.getID();
214
+ const profile = this.getProfileName();
215
+ return `Ant+${profile} ${deviceID}`;
216
+ }
217
+ getUniqueName() {
218
+ if (this.settings.name)
219
+ return this.settings.name;
220
+ const { ManId } = this.deviceData;
221
+ const profile = this.getProfileName();
222
+ const brand = (0, utils_js_2.getBrand)(ManId);
223
+ const id = this.getID();
224
+ if (brand)
225
+ return `${brand} ${profile} ${id}`;
226
+ else
227
+ return `${this.getName()}`;
228
+ }
229
+ getDisplayName() {
230
+ return this.getUniqueName();
231
+ }
232
+ getInterface() {
233
+ return INTERFACE_NAME;
234
+ }
235
+ getProfile() {
236
+ const settings = this.settings;
237
+ if (settings.protocol === undefined)
238
+ return settings.profile;
239
+ else {
240
+ return (0, utils_js_2.mapLegacyProfile)(settings.profile);
241
+ }
242
+ }
243
+ getLogData(data, excludeList) {
244
+ const logData = JSON.parse(JSON.stringify(data));
245
+ excludeList.forEach((key) => {
246
+ delete logData[key];
247
+ });
248
+ return logData;
249
+ }
250
+ async check() {
251
+ try {
252
+ return await this.start();
253
+ }
254
+ catch {
255
+ return false;
256
+ }
257
+ }
258
+ async checkCapabilities() {
259
+ return;
260
+ }
261
+ async initControl() {
262
+ return;
263
+ }
264
+ getDefaultStartupTimeout() {
265
+ return 20000;
266
+ }
267
+ async startPreChecks(props) {
268
+ const wasPaused = this.paused;
269
+ const wasStopped = this.stopped;
270
+ this.stopped = false;
271
+ if (wasPaused)
272
+ this.resume();
273
+ if (this.started && !wasPaused && !wasStopped) {
274
+ return 'done';
275
+ }
276
+ if (this.started && wasPaused) {
277
+ return 'done';
278
+ }
279
+ const connected = await this.connect();
280
+ if (!connected)
281
+ return 'connection-failed';
282
+ return 'connected';
283
+ }
284
+ resetStartStatus() {
285
+ this.startStatus = { timeout: false, hasData: false, sensorStarted: false };
286
+ }
287
+ isStartSuccess() {
288
+ const { timeout, hasData, sensorStarted, controlInitialized, userInitialized, interrupted } = this.startStatus;
289
+ if (interrupted)
290
+ return false;
291
+ if (this.hasCapability(index_js_1.IncyclistCapability.Control))
292
+ return sensorStarted && hasData && userInitialized && controlInitialized && !timeout;
293
+ else
294
+ return sensorStarted && hasData && !timeout;
295
+ }
296
+ reportStartStatus() {
297
+ const success = this.isStartSuccess();
298
+ if (success) {
299
+ this.logEvent({ message: 'start device success', device: this.getName() });
300
+ this.started = true;
301
+ this.paused = false;
302
+ return true;
303
+ }
304
+ else {
305
+ this.started = false;
306
+ const { sensorStarted, hasData, interrupted } = this.startStatus;
307
+ if (interrupted) {
308
+ this.logEvent({ message: 'start device interrupted', device: this.getName() });
309
+ return false;
310
+ }
311
+ if (!sensorStarted) {
312
+ this.logEvent({ message: 'start device failed', device: this.getName(), reason: 'could not connect' });
313
+ throw new Error('could not start device, reason:could not connect');
314
+ }
315
+ else if (!hasData) {
316
+ this.logEvent({ message: 'start device failed', device: this.getName(), reason: 'no data received' });
317
+ throw new Error('could not start device, reason:no data received');
318
+ }
319
+ else {
320
+ this.logEvent({ message: 'start device failed', device: this.getName(), reason: 'could not send FE commands' });
321
+ throw new Error('could not start device, reason:could not send FE commands');
322
+ }
323
+ }
324
+ }
325
+ async waitForInitialData(startupTimeout) {
326
+ const { sensorStarted, hasData, timeout } = this.startStatus;
327
+ if ((sensorStarted && hasData) || !sensorStarted || timeout)
328
+ return;
329
+ this.logEvent({ message: 'wait for sensor data', device: this.getName() });
330
+ this.startStatus.hasData = await this.waitForData(startupTimeout);
331
+ if (this.startStatus.hasData)
332
+ this.logEvent({ message: 'sensor data received', device: this.getName() });
333
+ }
334
+ async initSensor(props) {
335
+ this.startStatus.sensorStarted = this.sensorConnected;
336
+ if (this.startStatus.sensorStarted)
337
+ return;
338
+ this.logEvent({ message: 'start sensor', device: this.getName(), props });
339
+ try {
340
+ this.sensorConnected = await this.startSensor();
341
+ if (this.sensorConnected) {
342
+ this.logEvent({ message: 'sensor started', device: this.getName(), channel: this.sensor?.getChannel()?.getChannelNo(), props });
343
+ this.startStatus.sensorStarted = true;
344
+ }
345
+ else {
346
+ this.logEvent({ message: 'start sensor failed', device: this.getName(), reason: 'unknown', props });
347
+ }
348
+ }
349
+ catch (err) {
350
+ this.logEvent({ message: 'start sensor failed', device: this.getName(), reason: err.message, props });
351
+ }
352
+ }
353
+ getLogProps(startProps) {
354
+ const { user, userWeight, bikeWeight, startupTimeout, automaticReconnect } = startProps ?? {};
355
+ return { user, userWeight, bikeWeight, startupTimeout, automaticReconnect };
356
+ }
357
+ async start(startProps) {
358
+ const props = this.getStartProps(startProps);
359
+ const logProps = this.getLogProps(startProps);
360
+ const preCheckResult = await this.startPreChecks(props);
361
+ if (preCheckResult === 'done')
362
+ return this.started;
363
+ if (preCheckResult === 'connection-failed')
364
+ throw new Error(`could not start device, reason:could not connect`);
365
+ this.logEvent({ message: 'starting device', device: this.getName(), props: logProps, isStarted: this.started, isPaused: this.isPaused, isStopped: this.isStopped });
366
+ this.resetStartStatus();
367
+ this.resetData();
368
+ const { startupTimeout = this.getDefaultStartupTimeout() } = props;
369
+ const retryDelay = this.getDefaultReconnectDelay();
370
+ const totalTimeout = Math.min(startupTimeout + 10000, (startupTimeout + retryDelay) * MAX_RETRIES);
371
+ const doStart = async () => {
372
+ let success = false;
373
+ let retry = 0;
374
+ while (!success && retry < MAX_RETRIES && !this.startStatus.timeout && !this.startStatus.interrupted) {
375
+ try {
376
+ retry++;
377
+ await this.initSensor(props);
378
+ await this.waitForInitialData(startupTimeout);
379
+ await this.checkCapabilities();
380
+ if (this.hasCapability(index_js_1.IncyclistCapability.Control))
381
+ await this.initControl();
382
+ if (!this.startStatus.hasData && !this.startStatus.interrupted) {
383
+ await this.stopSensor();
384
+ await (0, utils_js_1.sleep)(retryDelay);
385
+ continue;
386
+ }
387
+ success = this.isStartSuccess();
388
+ }
389
+ catch (err) {
390
+ this.logEvent({ message: 'error', fn: 'start#doStart', device: this.getName(), error: err.message, stack: err.stack });
391
+ }
392
+ }
393
+ this.reportStartStatus();
394
+ return this.started;
395
+ };
396
+ const checkInterrupt = () => new Promise(done => {
397
+ this.internalEmitter.on('stop', () => {
398
+ this.started = false;
399
+ this.startStatus.interrupted = true;
400
+ done(false);
401
+ });
402
+ });
403
+ try {
404
+ await (0, utils_js_1.runWithTimeout)(Promise.race([doStart(), checkInterrupt()]), totalTimeout);
405
+ }
406
+ catch (err) {
407
+ if (err.message === 'Timeout') {
408
+ this.started = false;
409
+ this.startStatus.timeout = true;
410
+ this.logEvent({ message: 'start device failed', device: this.getName(), reason: 'timeout' });
411
+ throw new Error(`could not start device, reason:timeout`);
412
+ }
413
+ throw err;
414
+ }
415
+ return this.started;
416
+ }
417
+ async stop() {
418
+ let stopped;
419
+ this.internalEmitter.emit('stop');
420
+ if (this.stopped)
421
+ return;
422
+ this.logger.logEvent({ message: 'stopping device', device: this.getName() });
423
+ this.promiseWaitForData = null;
424
+ if (this.startStatus) {
425
+ this.startStatus.interrupted = true;
426
+ await (0, utils_js_1.sleep)(20);
427
+ }
428
+ try {
429
+ stopped = await (0, utils_js_1.runWithTimeout)(this.ant.stopSensor(this.sensor), 5000);
430
+ }
431
+ catch (err) {
432
+ this.logEvent({ message: 'stop sensor failed', reason: err.message });
433
+ }
434
+ this.sensorConnected = false;
435
+ this.started = false;
436
+ this.stopped = true;
437
+ this.paused = false;
438
+ this.removeAllListeners();
439
+ this.logEvent({ message: 'stopping device finished', device: this.getName(), stopped });
440
+ return stopped;
441
+ }
442
+ async startSensor() {
443
+ return await this.ant.startSensor(this.sensor, this.onDeviceData.bind(this));
444
+ }
445
+ async stopSensor() {
446
+ if (!this.sensorConnected)
447
+ return;
448
+ try {
449
+ await await this.ant.stopSensor(this.sensor);
450
+ this.sensorConnected = false;
451
+ }
452
+ catch { }
453
+ }
454
+ setCyclingMode(mode, settings, sendInitCommands) {
455
+ super.setCyclingMode(mode, settings, sendInitCommands);
456
+ this.refreshDeviceData();
457
+ }
458
+ }
459
+ exports.default = AntAdapter;