node-poweredup 9.0.0 → 10.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 (706) hide show
  1. package/README.md +6 -11
  2. package/dist/color.d.ts +7 -0
  3. package/dist/color.d.ts.map +1 -0
  4. package/dist/color.js +15 -0
  5. package/dist/color.js.map +1 -0
  6. package/dist/consts.d.ts +645 -0
  7. package/dist/consts.d.ts.map +1 -0
  8. package/{docs/consts.js.html → dist/consts.js} +74 -127
  9. package/dist/consts.js.map +1 -0
  10. package/dist/devices/absolutemotor.d.ts +41 -0
  11. package/dist/devices/absolutemotor.d.ts.map +1 -0
  12. package/dist/devices/absolutemotor.js +115 -0
  13. package/dist/devices/absolutemotor.js.map +1 -0
  14. package/dist/devices/basicmotor.d.ts +37 -0
  15. package/dist/devices/basicmotor.d.ts.map +1 -0
  16. package/dist/devices/basicmotor.js +57 -0
  17. package/dist/devices/basicmotor.js.map +1 -0
  18. package/dist/devices/colordistancesensor.d.ts +74 -0
  19. package/dist/devices/colordistancesensor.d.ts.map +1 -0
  20. package/dist/devices/colordistancesensor.js +278 -0
  21. package/dist/devices/colordistancesensor.js.map +1 -0
  22. package/dist/devices/currentsensor.d.ts +17 -0
  23. package/dist/devices/currentsensor.d.ts.map +1 -0
  24. package/dist/devices/currentsensor.js +55 -0
  25. package/dist/devices/currentsensor.js.map +1 -0
  26. package/dist/devices/device.d.ts +72 -0
  27. package/dist/devices/device.d.ts.map +1 -0
  28. package/dist/devices/device.js +162 -0
  29. package/dist/devices/device.js.map +1 -0
  30. package/dist/devices/duplotrainbasecolorsensor.d.ts +20 -0
  31. package/dist/devices/duplotrainbasecolorsensor.d.ts.map +1 -0
  32. package/dist/devices/duplotrainbasecolorsensor.js +77 -0
  33. package/dist/devices/duplotrainbasecolorsensor.js.map +1 -0
  34. package/dist/devices/duplotrainbasemotor.d.ts +10 -0
  35. package/dist/devices/duplotrainbasemotor.d.ts.map +1 -0
  36. package/dist/devices/duplotrainbasemotor.js +12 -0
  37. package/dist/devices/duplotrainbasemotor.js.map +1 -0
  38. package/dist/devices/duplotrainbasespeaker.d.ts +27 -0
  39. package/dist/devices/duplotrainbasespeaker.d.ts.map +1 -0
  40. package/dist/devices/duplotrainbasespeaker.js +38 -0
  41. package/dist/devices/duplotrainbasespeaker.js.map +1 -0
  42. package/dist/devices/duplotrainbasespeedometer.d.ts +17 -0
  43. package/dist/devices/duplotrainbasespeedometer.d.ts.map +1 -0
  44. package/dist/devices/duplotrainbasespeedometer.js +34 -0
  45. package/dist/devices/duplotrainbasespeedometer.js.map +1 -0
  46. package/dist/devices/hubled.d.ts +28 -0
  47. package/dist/devices/hubled.d.ts.map +1 -0
  48. package/dist/devices/hubled.js +58 -0
  49. package/dist/devices/hubled.js.map +1 -0
  50. package/dist/devices/light.d.ts +24 -0
  51. package/dist/devices/light.d.ts.map +1 -0
  52. package/dist/devices/light.js +44 -0
  53. package/dist/devices/light.js.map +1 -0
  54. package/dist/devices/marioaccelerometer.d.ts +18 -0
  55. package/dist/devices/marioaccelerometer.d.ts.map +1 -0
  56. package/dist/devices/marioaccelerometer.js +50 -0
  57. package/dist/devices/marioaccelerometer.js.map +1 -0
  58. package/dist/devices/mariobarcodesensor.d.ts +18 -0
  59. package/dist/devices/mariobarcodesensor.d.ts.map +1 -0
  60. package/dist/devices/mariobarcodesensor.js +58 -0
  61. package/dist/devices/mariobarcodesensor.js.map +1 -0
  62. package/dist/devices/mariopantssensor.d.ts +17 -0
  63. package/dist/devices/mariopantssensor.d.ts.map +1 -0
  64. package/dist/devices/mariopantssensor.js +34 -0
  65. package/dist/devices/mariopantssensor.js.map +1 -0
  66. package/dist/devices/mediumlinearmotor.d.ts +10 -0
  67. package/dist/devices/mediumlinearmotor.d.ts.map +1 -0
  68. package/dist/devices/mediumlinearmotor.js +12 -0
  69. package/dist/devices/mediumlinearmotor.js.map +1 -0
  70. package/dist/devices/motionsensor.d.ts +17 -0
  71. package/dist/devices/motionsensor.d.ts.map +1 -0
  72. package/dist/devices/motionsensor.js +38 -0
  73. package/dist/devices/motionsensor.js.map +1 -0
  74. package/dist/devices/movehubmediumlinearmotor.d.ts +10 -0
  75. package/dist/devices/movehubmediumlinearmotor.d.ts.map +1 -0
  76. package/dist/devices/movehubmediumlinearmotor.js +12 -0
  77. package/dist/devices/movehubmediumlinearmotor.js.map +1 -0
  78. package/dist/devices/movehubtiltsensor.d.ts +17 -0
  79. package/dist/devices/movehubtiltsensor.d.ts.map +1 -0
  80. package/dist/devices/movehubtiltsensor.js +36 -0
  81. package/dist/devices/movehubtiltsensor.js.map +1 -0
  82. package/dist/devices/piezobuzzer.d.ts +17 -0
  83. package/dist/devices/piezobuzzer.d.ts.map +1 -0
  84. package/dist/devices/piezobuzzer.js +27 -0
  85. package/dist/devices/piezobuzzer.js.map +1 -0
  86. package/dist/devices/remotecontrolbutton.d.ts +20 -0
  87. package/dist/devices/remotecontrolbutton.d.ts.map +1 -0
  88. package/dist/devices/remotecontrolbutton.js +40 -0
  89. package/dist/devices/remotecontrolbutton.js.map +1 -0
  90. package/dist/devices/simplemediumlinearmotor.d.ts +10 -0
  91. package/dist/devices/simplemediumlinearmotor.d.ts.map +1 -0
  92. package/dist/devices/simplemediumlinearmotor.js +12 -0
  93. package/dist/devices/simplemediumlinearmotor.js.map +1 -0
  94. package/dist/devices/tachomotor.d.ts +65 -0
  95. package/dist/devices/tachomotor.d.ts.map +1 -0
  96. package/dist/devices/tachomotor.js +161 -0
  97. package/dist/devices/tachomotor.js.map +1 -0
  98. package/dist/devices/technic3x3colorlightmatrix.d.ts +22 -0
  99. package/dist/devices/technic3x3colorlightmatrix.d.ts.map +1 -0
  100. package/dist/devices/technic3x3colorlightmatrix.js +53 -0
  101. package/dist/devices/technic3x3colorlightmatrix.js.map +1 -0
  102. package/dist/devices/techniccolorsensor.d.ts +27 -0
  103. package/dist/devices/techniccolorsensor.d.ts.map +1 -0
  104. package/dist/devices/techniccolorsensor.js +71 -0
  105. package/dist/devices/techniccolorsensor.js.map +1 -0
  106. package/dist/devices/technicdistancesensor.d.ts +27 -0
  107. package/dist/devices/technicdistancesensor.d.ts.map +1 -0
  108. package/dist/devices/technicdistancesensor.js +57 -0
  109. package/dist/devices/technicdistancesensor.js.map +1 -0
  110. package/dist/devices/technicforcesensor.d.ts +19 -0
  111. package/dist/devices/technicforcesensor.d.ts.map +1 -0
  112. package/dist/devices/technicforcesensor.js +58 -0
  113. package/dist/devices/technicforcesensor.js.map +1 -0
  114. package/dist/devices/techniclargeangularmotor.d.ts +13 -0
  115. package/dist/devices/techniclargeangularmotor.d.ts.map +1 -0
  116. package/dist/devices/techniclargeangularmotor.js +12 -0
  117. package/dist/devices/techniclargeangularmotor.js.map +1 -0
  118. package/dist/devices/techniclargelinearmotor.d.ts +10 -0
  119. package/dist/devices/techniclargelinearmotor.d.ts.map +1 -0
  120. package/dist/devices/techniclargelinearmotor.js +12 -0
  121. package/dist/devices/techniclargelinearmotor.js.map +1 -0
  122. package/dist/devices/technicmediumangularmotor.d.ts +13 -0
  123. package/dist/devices/technicmediumangularmotor.d.ts.map +1 -0
  124. package/dist/devices/technicmediumangularmotor.js +12 -0
  125. package/dist/devices/technicmediumangularmotor.js.map +1 -0
  126. package/dist/devices/technicmediumhubaccelerometersensor.d.ts +17 -0
  127. package/dist/devices/technicmediumhubaccelerometersensor.d.ts.map +1 -0
  128. package/dist/devices/technicmediumhubaccelerometersensor.js +38 -0
  129. package/dist/devices/technicmediumhubaccelerometersensor.js.map +1 -0
  130. package/dist/devices/technicmediumhubgyrosensor.d.ts +17 -0
  131. package/dist/devices/technicmediumhubgyrosensor.d.ts.map +1 -0
  132. package/dist/devices/technicmediumhubgyrosensor.js +38 -0
  133. package/dist/devices/technicmediumhubgyrosensor.js.map +1 -0
  134. package/dist/devices/technicmediumhubtiltsensor.d.ts +38 -0
  135. package/dist/devices/technicmediumhubtiltsensor.d.ts.map +1 -0
  136. package/dist/devices/technicmediumhubtiltsensor.js +103 -0
  137. package/dist/devices/technicmediumhubtiltsensor.js.map +1 -0
  138. package/dist/devices/technicsmallangularmotor.d.ts +13 -0
  139. package/dist/devices/technicsmallangularmotor.d.ts.map +1 -0
  140. package/dist/devices/technicsmallangularmotor.js +12 -0
  141. package/dist/devices/technicsmallangularmotor.js.map +1 -0
  142. package/dist/devices/technicxlargelinearmotor.d.ts +10 -0
  143. package/dist/devices/technicxlargelinearmotor.d.ts.map +1 -0
  144. package/dist/devices/technicxlargelinearmotor.js +12 -0
  145. package/dist/devices/technicxlargelinearmotor.js.map +1 -0
  146. package/dist/devices/tiltsensor.d.ts +17 -0
  147. package/dist/devices/tiltsensor.d.ts.map +1 -0
  148. package/dist/devices/tiltsensor.js +36 -0
  149. package/dist/devices/tiltsensor.js.map +1 -0
  150. package/dist/devices/trainmotor.d.ts +10 -0
  151. package/dist/devices/trainmotor.d.ts.map +1 -0
  152. package/dist/devices/trainmotor.js +12 -0
  153. package/dist/devices/trainmotor.js.map +1 -0
  154. package/dist/devices/voltagesensor.d.ts +17 -0
  155. package/dist/devices/voltagesensor.d.ts.map +1 -0
  156. package/dist/devices/voltagesensor.js +59 -0
  157. package/dist/devices/voltagesensor.js.map +1 -0
  158. package/dist/hubs/basehub.d.ts +154 -0
  159. package/dist/hubs/basehub.d.ts.map +1 -0
  160. package/dist/hubs/basehub.js +383 -0
  161. package/dist/hubs/basehub.js.map +1 -0
  162. package/dist/hubs/duplotrainbase.d.ts +18 -0
  163. package/dist/hubs/duplotrainbase.d.ts.map +1 -0
  164. package/dist/hubs/duplotrainbase.js +35 -0
  165. package/dist/hubs/duplotrainbase.js.map +1 -0
  166. package/dist/hubs/hub.d.ts +20 -0
  167. package/dist/hubs/hub.d.ts.map +1 -0
  168. package/dist/hubs/hub.js +44 -0
  169. package/dist/hubs/hub.js.map +1 -0
  170. package/dist/hubs/lpf2hub.d.ts +46 -0
  171. package/dist/hubs/lpf2hub.d.ts.map +1 -0
  172. package/{docs/hubs_lpf2hub.js.html → dist/hubs/lpf2hub.js} +23 -103
  173. package/dist/hubs/lpf2hub.js.map +1 -0
  174. package/dist/hubs/mario.d.ts +18 -0
  175. package/dist/hubs/mario.d.ts.map +1 -0
  176. package/dist/hubs/mario.js +31 -0
  177. package/dist/hubs/mario.js.map +1 -0
  178. package/dist/hubs/movehub.d.ts +19 -0
  179. package/dist/hubs/movehub.d.ts.map +1 -0
  180. package/dist/hubs/movehub.js +46 -0
  181. package/dist/hubs/movehub.js.map +1 -0
  182. package/dist/hubs/remotecontrol.d.ts +18 -0
  183. package/dist/hubs/remotecontrol.d.ts.map +1 -0
  184. package/dist/hubs/remotecontrol.js +37 -0
  185. package/dist/hubs/remotecontrol.js.map +1 -0
  186. package/dist/hubs/technicmediumhub.d.ts +18 -0
  187. package/dist/hubs/technicmediumhub.d.ts.map +1 -0
  188. package/dist/hubs/technicmediumhub.js +42 -0
  189. package/dist/hubs/technicmediumhub.js.map +1 -0
  190. package/dist/hubs/technicsmallhub.d.ts +19 -0
  191. package/dist/hubs/technicsmallhub.d.ts.map +1 -0
  192. package/dist/hubs/technicsmallhub.js +41 -0
  193. package/dist/hubs/technicsmallhub.js.map +1 -0
  194. package/dist/hubs/wedo2smarthub.d.ts +39 -0
  195. package/dist/hubs/wedo2smarthub.d.ts.map +1 -0
  196. package/dist/hubs/wedo2smarthub.js +186 -0
  197. package/dist/hubs/wedo2smarthub.js.map +1 -0
  198. package/dist/index-browser.d.ts +2 -0
  199. package/dist/index-browser.d.ts.map +1 -0
  200. package/dist/index-browser.js +96 -0
  201. package/dist/index-browser.js.map +1 -0
  202. package/dist/index-node.d.ts +50 -0
  203. package/dist/index-node.d.ts.map +1 -0
  204. package/dist/index-node.js +50 -0
  205. package/dist/index-node.js.map +1 -0
  206. package/dist/interfaces.d.ts +24 -0
  207. package/dist/interfaces.d.ts.map +1 -0
  208. package/dist/interfaces.js +2 -0
  209. package/dist/interfaces.js.map +1 -0
  210. package/dist/nobleabstraction.d.ts +27 -0
  211. package/dist/nobleabstraction.d.ts.map +1 -0
  212. package/dist/nobleabstraction.js +121 -0
  213. package/dist/nobleabstraction.js.map +1 -0
  214. package/dist/node/color.js +2 -29
  215. package/dist/node/color.js.map +1 -1
  216. package/dist/node/commands.d.ts +299 -0
  217. package/dist/node/commands.js +672 -0
  218. package/dist/node/commands.js.map +1 -0
  219. package/dist/node/connection.d.ts +187 -0
  220. package/dist/node/connection.js +478 -0
  221. package/dist/node/connection.js.map +1 -0
  222. package/dist/node/consts.js +57 -60
  223. package/dist/node/consts.js.map +1 -1
  224. package/dist/node/devices/absolutemotor.d.ts +0 -1
  225. package/dist/node/devices/absolutemotor.js +14 -41
  226. package/dist/node/devices/absolutemotor.js.map +1 -1
  227. package/dist/node/devices/basicmotor.d.ts +3 -3
  228. package/dist/node/devices/basicmotor.js +6 -33
  229. package/dist/node/devices/basicmotor.js.map +1 -1
  230. package/dist/node/devices/colordistancesensor.d.ts +4 -5
  231. package/dist/node/devices/colordistancesensor.js +11 -38
  232. package/dist/node/devices/colordistancesensor.js.map +1 -1
  233. package/dist/node/devices/currentsensor.d.ts +0 -1
  234. package/dist/node/devices/currentsensor.js +7 -34
  235. package/dist/node/devices/currentsensor.js.map +1 -1
  236. package/dist/node/devices/device.d.ts +4 -7
  237. package/dist/node/devices/device.js +3 -30
  238. package/dist/node/devices/device.js.map +1 -1
  239. package/dist/node/devices/duplotrainbasecolorsensor.d.ts +0 -1
  240. package/dist/node/devices/duplotrainbasecolorsensor.js +9 -36
  241. package/dist/node/devices/duplotrainbasecolorsensor.js.map +1 -1
  242. package/dist/node/devices/duplotrainbasemotor.js +3 -30
  243. package/dist/node/devices/duplotrainbasemotor.js.map +1 -1
  244. package/dist/node/devices/duplotrainbasespeaker.js +5 -32
  245. package/dist/node/devices/duplotrainbasespeaker.js.map +1 -1
  246. package/dist/node/devices/duplotrainbasespeedometer.d.ts +0 -1
  247. package/dist/node/devices/duplotrainbasespeedometer.js +7 -34
  248. package/dist/node/devices/duplotrainbasespeedometer.js.map +1 -1
  249. package/dist/node/devices/hubled.js +5 -32
  250. package/dist/node/devices/hubled.js.map +1 -1
  251. package/dist/node/devices/index.d.ts +14 -0
  252. package/dist/node/devices/index.js +154 -0
  253. package/dist/node/devices/index.js.map +1 -0
  254. package/dist/node/devices/led.d.ts +140 -0
  255. package/dist/node/devices/led.js +295 -0
  256. package/dist/node/devices/led.js.map +1 -0
  257. package/dist/node/devices/light.js +5 -32
  258. package/dist/node/devices/light.js.map +1 -1
  259. package/dist/node/devices/marioaccelerometer.d.ts +0 -1
  260. package/dist/node/devices/marioaccelerometer.js +7 -34
  261. package/dist/node/devices/marioaccelerometer.js.map +1 -1
  262. package/dist/node/devices/mariobarcodesensor.d.ts +0 -1
  263. package/dist/node/devices/mariobarcodesensor.js +7 -34
  264. package/dist/node/devices/mariobarcodesensor.js.map +1 -1
  265. package/dist/node/devices/mariopantssensor.d.ts +0 -1
  266. package/dist/node/devices/mariopantssensor.js +7 -34
  267. package/dist/node/devices/mariopantssensor.js.map +1 -1
  268. package/dist/node/devices/mediumlinearmotor.js +3 -30
  269. package/dist/node/devices/mediumlinearmotor.js.map +1 -1
  270. package/dist/node/devices/motionsensor.d.ts +0 -1
  271. package/dist/node/devices/motionsensor.js +7 -34
  272. package/dist/node/devices/motionsensor.js.map +1 -1
  273. package/dist/node/devices/motor.d.ts +182 -0
  274. package/dist/node/devices/motor.js +367 -0
  275. package/dist/node/devices/motor.js.map +1 -0
  276. package/dist/node/devices/movehubmediumlinearmotor.js +3 -30
  277. package/dist/node/devices/movehubmediumlinearmotor.js.map +1 -1
  278. package/dist/node/devices/movehubtiltsensor.d.ts +0 -1
  279. package/dist/node/devices/movehubtiltsensor.js +7 -34
  280. package/dist/node/devices/movehubtiltsensor.js.map +1 -1
  281. package/dist/node/devices/piezobuzzer.js +3 -30
  282. package/dist/node/devices/piezobuzzer.js.map +1 -1
  283. package/dist/node/devices/remotecontrolbutton.d.ts +0 -1
  284. package/dist/node/devices/remotecontrolbutton.js +8 -35
  285. package/dist/node/devices/remotecontrolbutton.js.map +1 -1
  286. package/dist/node/devices/sensor.d.ts +305 -0
  287. package/dist/node/devices/sensor.js +662 -0
  288. package/dist/node/devices/sensor.js.map +1 -0
  289. package/dist/node/devices/simplemediumlinearmotor.js +3 -30
  290. package/dist/node/devices/simplemediumlinearmotor.js.map +1 -1
  291. package/dist/node/devices/tachomotor.d.ts +0 -1
  292. package/dist/node/devices/tachomotor.js +14 -41
  293. package/dist/node/devices/tachomotor.js.map +1 -1
  294. package/dist/node/devices/technic3x3colorlightmatrix.js +7 -34
  295. package/dist/node/devices/technic3x3colorlightmatrix.js.map +1 -1
  296. package/dist/node/devices/techniccolorsensor.d.ts +0 -1
  297. package/dist/node/devices/techniccolorsensor.js +9 -36
  298. package/dist/node/devices/techniccolorsensor.js.map +1 -1
  299. package/dist/node/devices/technicdistancesensor.d.ts +0 -1
  300. package/dist/node/devices/technicdistancesensor.js +7 -34
  301. package/dist/node/devices/technicdistancesensor.js.map +1 -1
  302. package/dist/node/devices/technicforcesensor.d.ts +0 -1
  303. package/dist/node/devices/technicforcesensor.js +7 -34
  304. package/dist/node/devices/technicforcesensor.js.map +1 -1
  305. package/dist/node/devices/techniclargeangularmotor.js +3 -30
  306. package/dist/node/devices/techniclargeangularmotor.js.map +1 -1
  307. package/dist/node/devices/techniclargelinearmotor.js +3 -30
  308. package/dist/node/devices/techniclargelinearmotor.js.map +1 -1
  309. package/dist/node/devices/technicmediumangularmotor.js +3 -30
  310. package/dist/node/devices/technicmediumangularmotor.js.map +1 -1
  311. package/dist/node/devices/technicmediumhubaccelerometersensor.d.ts +0 -1
  312. package/dist/node/devices/technicmediumhubaccelerometersensor.js +7 -34
  313. package/dist/node/devices/technicmediumhubaccelerometersensor.js.map +1 -1
  314. package/dist/node/devices/technicmediumhubgyrosensor.d.ts +0 -1
  315. package/dist/node/devices/technicmediumhubgyrosensor.js +7 -34
  316. package/dist/node/devices/technicmediumhubgyrosensor.js.map +1 -1
  317. package/dist/node/devices/technicmediumhubtiltsensor.d.ts +0 -1
  318. package/dist/node/devices/technicmediumhubtiltsensor.js +7 -34
  319. package/dist/node/devices/technicmediumhubtiltsensor.js.map +1 -1
  320. package/dist/node/devices/technicsmallangularmotor.js +3 -30
  321. package/dist/node/devices/technicsmallangularmotor.js.map +1 -1
  322. package/dist/node/devices/technicxlargelinearmotor.js +3 -30
  323. package/dist/node/devices/technicxlargelinearmotor.js.map +1 -1
  324. package/dist/node/devices/tiltsensor.d.ts +0 -1
  325. package/dist/node/devices/tiltsensor.js +7 -34
  326. package/dist/node/devices/tiltsensor.js.map +1 -1
  327. package/dist/node/devices/trainmotor.js +3 -30
  328. package/dist/node/devices/trainmotor.js.map +1 -1
  329. package/dist/node/devices/voltagesensor.d.ts +0 -1
  330. package/dist/node/devices/voltagesensor.js +7 -34
  331. package/dist/node/devices/voltagesensor.js.map +1 -1
  332. package/dist/node/hub.d.ts +291 -0
  333. package/dist/node/hub.js +778 -0
  334. package/dist/node/hub.js.map +1 -0
  335. package/dist/node/hubs/basehub.d.ts +9 -11
  336. package/dist/node/hubs/basehub.js +74 -101
  337. package/dist/node/hubs/basehub.js.map +1 -1
  338. package/dist/node/hubs/duplotrainbase.d.ts +1 -2
  339. package/dist/node/hubs/duplotrainbase.js +6 -33
  340. package/dist/node/hubs/duplotrainbase.js.map +1 -1
  341. package/dist/node/hubs/hub.d.ts +1 -2
  342. package/dist/node/hubs/hub.js +8 -35
  343. package/dist/node/hubs/hub.js.map +1 -1
  344. package/dist/node/hubs/lpf2hub.d.ts +5 -6
  345. package/dist/node/hubs/lpf2hub.js +17 -44
  346. package/dist/node/hubs/lpf2hub.js.map +1 -1
  347. package/dist/node/hubs/mario.d.ts +1 -2
  348. package/dist/node/hubs/mario.js +6 -33
  349. package/dist/node/hubs/mario.js.map +1 -1
  350. package/dist/node/hubs/movehub.d.ts +1 -2
  351. package/dist/node/hubs/movehub.js +8 -35
  352. package/dist/node/hubs/movehub.js.map +1 -1
  353. package/dist/node/hubs/remotecontrol.d.ts +1 -2
  354. package/dist/node/hubs/remotecontrol.js +6 -33
  355. package/dist/node/hubs/remotecontrol.js.map +1 -1
  356. package/dist/node/hubs/technicmediumhub.d.ts +1 -2
  357. package/dist/node/hubs/technicmediumhub.js +6 -33
  358. package/dist/node/hubs/technicmediumhub.js.map +1 -1
  359. package/dist/node/hubs/technicsmallhub.d.ts +1 -2
  360. package/dist/node/hubs/technicsmallhub.js +6 -33
  361. package/dist/node/hubs/technicsmallhub.js.map +1 -1
  362. package/dist/node/hubs/wedo2smarthub.d.ts +3 -5
  363. package/dist/node/hubs/wedo2smarthub.js +10 -37
  364. package/dist/node/hubs/wedo2smarthub.js.map +1 -1
  365. package/dist/node/index-browser.js +91 -116
  366. package/dist/node/index-browser.js.map +1 -1
  367. package/dist/node/index-node.d.ts +1 -0
  368. package/dist/node/index-node.js +49 -119
  369. package/dist/node/index-node.js.map +1 -1
  370. package/dist/node/index.d.ts +31 -0
  371. package/dist/node/index.js +93 -0
  372. package/dist/node/index.js.map +1 -0
  373. package/dist/node/index.mjs +0 -0
  374. package/dist/node/interfaces.d.ts +1 -3
  375. package/dist/node/interfaces.js +1 -2
  376. package/dist/node/nobleabstraction.d.ts +0 -2
  377. package/dist/node/nobleabstraction.js +5 -7
  378. package/dist/node/nobleabstraction.js.map +1 -1
  379. package/dist/node/poweredup-browser.d.ts +0 -2
  380. package/dist/node/poweredup-browser.js +23 -49
  381. package/dist/node/poweredup-browser.js.map +1 -1
  382. package/dist/node/poweredup-node.d.ts +0 -2
  383. package/dist/node/poweredup-node.js +31 -58
  384. package/dist/node/poweredup-node.js.map +1 -1
  385. package/dist/node/poweredup.d.ts +83 -0
  386. package/dist/node/poweredup.js +542 -0
  387. package/dist/node/poweredup.js.map +1 -0
  388. package/dist/node/protocol-wedo.d.ts +158 -0
  389. package/dist/node/protocol-wedo.js +342 -0
  390. package/dist/node/protocol-wedo.js.map +1 -0
  391. package/dist/node/protocol.d.ts +340 -0
  392. package/dist/node/protocol.js +730 -0
  393. package/dist/node/protocol.js.map +1 -0
  394. package/dist/node/types.d.ts +408 -0
  395. package/dist/node/types.js +291 -0
  396. package/dist/node/types.js.map +1 -0
  397. package/dist/node/utils.d.ts +1 -2
  398. package/dist/node/utils.js +14 -26
  399. package/dist/node/utils.js.map +1 -1
  400. package/dist/node/webbleabstraction.d.ts +1 -3
  401. package/dist/node/webbleabstraction.js +3 -7
  402. package/dist/node/webbleabstraction.js.map +1 -1
  403. package/dist/poweredup-browser.d.ts +46 -0
  404. package/dist/poweredup-browser.d.ts.map +1 -0
  405. package/dist/poweredup-browser.js +210 -0
  406. package/dist/poweredup-browser.js.map +1 -0
  407. package/dist/poweredup-node.d.ts +49 -0
  408. package/dist/poweredup-node.d.ts.map +1 -0
  409. package/dist/poweredup-node.js +166 -0
  410. package/dist/poweredup-node.js.map +1 -0
  411. package/dist/tsconfig.tsbuildinfo +1 -0
  412. package/dist/utils.d.ts +13 -0
  413. package/dist/utils.d.ts.map +1 -0
  414. package/dist/utils.js +90 -0
  415. package/dist/utils.js.map +1 -0
  416. package/dist/webbleabstraction.d.ts +27 -0
  417. package/dist/webbleabstraction.d.ts.map +1 -0
  418. package/dist/webbleabstraction.js +104 -0
  419. package/dist/webbleabstraction.js.map +1 -0
  420. package/docs/.nojekyll +1 -0
  421. package/docs/assets/hierarchy.js +1 -0
  422. package/docs/assets/highlight.css +99 -0
  423. package/docs/assets/icons.js +18 -0
  424. package/docs/assets/icons.svg +1 -0
  425. package/docs/assets/main.js +60 -0
  426. package/docs/assets/navigation.js +1 -0
  427. package/docs/assets/search.js +1 -0
  428. package/docs/assets/style.css +1633 -0
  429. package/docs/classes/AbsoluteMotor.html +242 -0
  430. package/docs/classes/BaseHub.html +220 -0
  431. package/docs/classes/BasicMotor.html +201 -0
  432. package/docs/classes/Color.html +3 -0
  433. package/docs/classes/ColorDistanceSensor.html +214 -0
  434. package/docs/classes/CurrentSensor.html +185 -0
  435. package/docs/classes/Device.html +185 -0
  436. package/docs/classes/DuploTrainBase.html +233 -0
  437. package/docs/classes/DuploTrainBaseColorSensor.html +185 -0
  438. package/docs/classes/DuploTrainBaseMotor.html +201 -0
  439. package/docs/classes/DuploTrainBaseSpeaker.html +191 -0
  440. package/docs/classes/DuploTrainBaseSpeedometer.html +185 -0
  441. package/docs/classes/Hub.html +233 -0
  442. package/docs/classes/HubLED.html +191 -0
  443. package/docs/classes/Light.html +195 -0
  444. package/docs/classes/Mario.html +233 -0
  445. package/docs/classes/MediumLinearMotor.html +229 -0
  446. package/docs/classes/MotionSensor.html +185 -0
  447. package/docs/classes/MoveHub.html +233 -0
  448. package/docs/classes/MoveHubMediumLinearMotor.html +229 -0
  449. package/docs/classes/MoveHubTiltSensor.html +185 -0
  450. package/docs/classes/PiezoBuzzer.html +189 -0
  451. package/docs/classes/PoweredUP.html +180 -0
  452. package/docs/classes/RemoteControl.html +233 -0
  453. package/docs/classes/RemoteControlButton.html +185 -0
  454. package/docs/classes/SimpleMediumLinearMotor.html +201 -0
  455. package/docs/classes/TachoMotor.html +229 -0
  456. package/docs/classes/Technic3x3ColorLightMatrix.html +189 -0
  457. package/docs/classes/TechnicColorSensor.html +191 -0
  458. package/docs/classes/TechnicDistanceSensor.html +192 -0
  459. package/docs/classes/TechnicForceSensor.html +185 -0
  460. package/docs/classes/TechnicLargeAngularMotor.html +242 -0
  461. package/docs/classes/TechnicLargeLinearMotor.html +242 -0
  462. package/docs/classes/TechnicMediumAngularMotor.html +242 -0
  463. package/docs/classes/TechnicMediumHub.html +233 -0
  464. package/docs/classes/TechnicMediumHubAccelerometerSensor.html +185 -0
  465. package/docs/classes/TechnicMediumHubGyroSensor.html +185 -0
  466. package/docs/classes/TechnicMediumHubTiltSensor.html +197 -0
  467. package/docs/classes/TechnicSmallAngularMotor.html +242 -0
  468. package/docs/classes/TechnicXLargeLinearMotor.html +242 -0
  469. package/docs/classes/TiltSensor.html +185 -0
  470. package/docs/classes/TrainMotor.html +201 -0
  471. package/docs/classes/VoltageSensor.html +185 -0
  472. package/docs/classes/WeDo2SmartHub.html +229 -0
  473. package/docs/enums/ActionType.html +22 -0
  474. package/docs/enums/AlertOperation.html +10 -0
  475. package/docs/enums/AlertPayload.html +6 -0
  476. package/docs/enums/AlertType.html +10 -0
  477. package/docs/enums/BLECharacteristic.html +15 -0
  478. package/docs/enums/BLEManufacturerData.html +8 -0
  479. package/docs/enums/BLEService.html +7 -0
  480. package/docs/enums/BrakingStyle.html +7 -0
  481. package/docs/enums/ButtonState.html +11 -0
  482. package/docs/enums/Consts.Color.html +25 -0
  483. package/docs/enums/DeviceType.html +79 -0
  484. package/docs/enums/DuploTrainBaseSound.html +11 -0
  485. package/docs/enums/ErrorCode.html +18 -0
  486. package/docs/enums/Event.html +8 -0
  487. package/docs/enums/HWNetWorkCommandType.html +28 -0
  488. package/docs/enums/HWNetworkFamily.html +20 -0
  489. package/docs/enums/HWNetworkSubFamily.html +16 -0
  490. package/docs/enums/HubPropertyOperation.html +14 -0
  491. package/docs/enums/HubPropertyPayload.html +32 -0
  492. package/docs/enums/HubPropertyReference.html +32 -0
  493. package/docs/enums/HubType.html +19 -0
  494. package/docs/enums/IOTypeID.html +30 -0
  495. package/docs/enums/MarioColor.html +17 -0
  496. package/docs/enums/MarioPantsType.html +13 -0
  497. package/docs/enums/MessageType.html +48 -0
  498. package/docs/enums/ModeInformationType.html +22 -0
  499. package/docs/enums/PortInputFormatSetupSubCommand.html +14 -0
  500. package/docs/hierarchy.html +1 -0
  501. package/docs/index.html +18 -120
  502. package/docs/modules/Consts.html +1 -0
  503. package/docs/modules.html +1 -0
  504. package/docs/variables/ColorNames.html +1 -0
  505. package/docs/variables/DeviceTypeNames.html +1 -0
  506. package/docs/variables/HubTypeNames.html +1 -0
  507. package/docs/variables/isWebBluetooth.html +1 -0
  508. package/package.json +19 -25
  509. package/src/color.ts +1 -1
  510. package/src/consts.ts +16 -16
  511. package/src/devices/absolutemotor.ts +4 -7
  512. package/src/devices/basicmotor.ts +4 -8
  513. package/src/devices/colordistancesensor.ts +8 -14
  514. package/src/devices/currentsensor.ts +3 -3
  515. package/src/devices/device.ts +2 -2
  516. package/src/devices/duplotrainbasecolorsensor.ts +4 -4
  517. package/src/devices/duplotrainbasemotor.ts +3 -3
  518. package/src/devices/duplotrainbasespeaker.ts +3 -5
  519. package/src/devices/duplotrainbasespeedometer.ts +3 -3
  520. package/src/devices/hubled.ts +3 -5
  521. package/src/devices/light.ts +4 -6
  522. package/src/devices/marioaccelerometer.ts +3 -3
  523. package/src/devices/mariobarcodesensor.ts +3 -3
  524. package/src/devices/mariopantssensor.ts +3 -3
  525. package/src/devices/mediumlinearmotor.ts +3 -3
  526. package/src/devices/motionsensor.ts +3 -3
  527. package/src/devices/movehubmediumlinearmotor.ts +3 -3
  528. package/src/devices/movehubtiltsensor.ts +3 -3
  529. package/src/devices/piezobuzzer.ts +3 -4
  530. package/src/devices/remotecontrolbutton.ts +3 -3
  531. package/src/devices/simplemediumlinearmotor.ts +3 -3
  532. package/src/devices/tachomotor.ts +5 -11
  533. package/src/devices/technic3x3colorlightmatrix.ts +4 -5
  534. package/src/devices/techniccolorsensor.ts +4 -5
  535. package/src/devices/technicdistancesensor.ts +3 -4
  536. package/src/devices/technicforcesensor.ts +3 -3
  537. package/src/devices/techniclargeangularmotor.ts +3 -3
  538. package/src/devices/techniclargelinearmotor.ts +3 -3
  539. package/src/devices/technicmediumangularmotor.ts +3 -3
  540. package/src/devices/technicmediumhubaccelerometersensor.ts +3 -3
  541. package/src/devices/technicmediumhubgyrosensor.ts +3 -3
  542. package/src/devices/technicmediumhubtiltsensor.ts +6 -9
  543. package/src/devices/technicsmallangularmotor.ts +3 -3
  544. package/src/devices/technicxlargelinearmotor.ts +3 -3
  545. package/src/devices/tiltsensor.ts +3 -3
  546. package/src/devices/trainmotor.ts +3 -3
  547. package/src/devices/voltagesensor.ts +3 -3
  548. package/src/hubs/basehub.ts +42 -51
  549. package/src/hubs/duplotrainbase.ts +5 -5
  550. package/src/hubs/hub.ts +5 -5
  551. package/src/hubs/lpf2hub.ts +4 -7
  552. package/src/hubs/mario.ts +5 -5
  553. package/src/hubs/movehub.ts +5 -5
  554. package/src/hubs/remotecontrol.ts +5 -5
  555. package/src/hubs/technicmediumhub.ts +5 -5
  556. package/src/hubs/technicsmallhub.ts +5 -5
  557. package/src/hubs/wedo2smarthub.ts +7 -9
  558. package/src/index-browser.ts +46 -46
  559. package/src/index-node.ts +47 -46
  560. package/src/interfaces.ts +2 -2
  561. package/src/nobleabstraction.ts +10 -10
  562. package/src/poweredup-browser.ts +15 -19
  563. package/src/poweredup-node.ts +15 -22
  564. package/src/utils.ts +1 -1
  565. package/src/webbleabstraction.ts +3 -3
  566. package/tsconfig.tsbuildinfo +1 -0
  567. package/typedoc.json +14 -0
  568. package/.jsdoc.json +0 -40
  569. package/abandonware-noble.d.ts +0 -129
  570. package/dist/browser/poweredup.js +0 -3
  571. package/dist/browser/poweredup.js.LICENSE.txt +0 -8
  572. package/dist/browser/poweredup.js.map +0 -1
  573. package/docs/AbsoluteMotor.html +0 -2008
  574. package/docs/BaseHub.html +0 -1391
  575. package/docs/BasicMotor.html +0 -1459
  576. package/docs/ColorDistanceSensor.html +0 -3025
  577. package/docs/CurrentSensor.html +0 -1022
  578. package/docs/Device.html +0 -841
  579. package/docs/DuploTrainBase.html +0 -2092
  580. package/docs/DuploTrainBaseColorSensor.html +0 -1509
  581. package/docs/DuploTrainBaseMotor.html +0 -1479
  582. package/docs/DuploTrainBaseSpeaker.html +0 -1193
  583. package/docs/DuploTraniBaseSpeedometer.html +0 -871
  584. package/docs/Hub.html +0 -7451
  585. package/docs/HubLED.html +0 -1239
  586. package/docs/LPF2Hub.html +0 -2066
  587. package/docs/Light.html +0 -1239
  588. package/docs/Mario.html +0 -2092
  589. package/docs/MarioAccelerometer.html +0 -1215
  590. package/docs/MarioBarcodeSensor.html +0 -1215
  591. package/docs/MarioPantsSensor.html +0 -1022
  592. package/docs/MediumLinearMotor.html +0 -1357
  593. package/docs/MotionSensor.html +0 -1022
  594. package/docs/MoveHub.html +0 -2092
  595. package/docs/MoveHubMediumLinearMotor.html +0 -1357
  596. package/docs/MoveHubTiltSensor.html +0 -1045
  597. package/docs/PiezoBuzzer.html +0 -1057
  598. package/docs/PoweredUP.html +0 -4371
  599. package/docs/RemoteControl.html +0 -2092
  600. package/docs/RemoteControlButton.html +0 -1022
  601. package/docs/SimpleMediumLinearMotor.html +0 -871
  602. package/docs/TachoMotor.html +0 -2620
  603. package/docs/Technic3x3ColorLightMatrix.html +0 -1037
  604. package/docs/TechnicColorSensor.html +0 -1525
  605. package/docs/TechnicDistanceSensor.html +0 -1401
  606. package/docs/TechnicForceSensor.html +0 -1316
  607. package/docs/TechnicLargeAngularMotor.html +0 -2028
  608. package/docs/TechnicLargeLinearMotor.html +0 -2028
  609. package/docs/TechnicMediumAngularMotor.html +0 -2028
  610. package/docs/TechnicMediumHub.html +0 -2092
  611. package/docs/TechnicMediumHubAccelerometerSensor.html +0 -1068
  612. package/docs/TechnicMediumHubGyroSensor.html +0 -1068
  613. package/docs/TechnicMediumHubTiltSensor.html +0 -1696
  614. package/docs/TechnicSmallAngularMotor.html +0 -2028
  615. package/docs/TechnicXLargeLinearMotor.html +0 -2028
  616. package/docs/TiltSensor.html +0 -1045
  617. package/docs/TrainMotor.html +0 -1479
  618. package/docs/VoltageSensor.html +0 -1022
  619. package/docs/WeDo2SmartHub.html +0 -1887
  620. package/docs/devices_absolutemotor.js.html +0 -195
  621. package/docs/devices_basicmotor.js.html +0 -138
  622. package/docs/devices_colordistancesensor.js.html +0 -361
  623. package/docs/devices_currentsensor.js.html +0 -132
  624. package/docs/devices_device.js.html +0 -239
  625. package/docs/devices_duplotrainbasecolorsensor.js.html +0 -154
  626. package/docs/devices_duplotrainbasemotor.js.html +0 -89
  627. package/docs/devices_duplotrainbasespeaker.js.html +0 -117
  628. package/docs/devices_duplotrainbasespeedometer.js.html +0 -111
  629. package/docs/devices_hubled.js.html +0 -137
  630. package/docs/devices_light.js.html +0 -123
  631. package/docs/devices_marioaccelerometer.js.html +0 -127
  632. package/docs/devices_mariobarcodesensor.js.html +0 -135
  633. package/docs/devices_mariopantssensor.js.html +0 -111
  634. package/docs/devices_mediumlinearmotor.js.html +0 -89
  635. package/docs/devices_motionsensor.js.html +0 -115
  636. package/docs/devices_movehubmediumlinearmotor.js.html +0 -89
  637. package/docs/devices_movehubtiltsensor.js.html +0 -113
  638. package/docs/devices_piezobuzzer.js.html +0 -105
  639. package/docs/devices_remotecontrolbutton.js.html +0 -117
  640. package/docs/devices_simplemediumlinearmotor.js.html +0 -89
  641. package/docs/devices_tachomotor.js.html +0 -244
  642. package/docs/devices_technic3x3colorlightmatrix.js.html +0 -131
  643. package/docs/devices_techniccolorsensor.js.html +0 -149
  644. package/docs/devices_technicdistancesensor.js.html +0 -135
  645. package/docs/devices_technicforcesensor.js.html +0 -135
  646. package/docs/devices_techniclargeangularmotor.js.html +0 -89
  647. package/docs/devices_techniclargelinearmotor.js.html +0 -89
  648. package/docs/devices_technicmediumangularmotor.js.html +0 -89
  649. package/docs/devices_technicmediumhubaccelerometersensor.js.html +0 -115
  650. package/docs/devices_technicmediumhubgyrosensor.js.html +0 -115
  651. package/docs/devices_technicmediumhubtiltsensor.js.html +0 -183
  652. package/docs/devices_technicsmallangularmotor.js.html +0 -89
  653. package/docs/devices_technicxlargelinearmotor.js.html +0 -89
  654. package/docs/devices_tiltsensor.js.html +0 -113
  655. package/docs/devices_trainmotor.js.html +0 -89
  656. package/docs/devices_voltagesensor.js.html +0 -136
  657. package/docs/fonts/OpenSans-Bold-webfont.eot +0 -0
  658. package/docs/fonts/OpenSans-Bold-webfont.svg +0 -1830
  659. package/docs/fonts/OpenSans-Bold-webfont.woff +0 -0
  660. package/docs/fonts/OpenSans-BoldItalic-webfont.eot +0 -0
  661. package/docs/fonts/OpenSans-BoldItalic-webfont.svg +0 -1830
  662. package/docs/fonts/OpenSans-BoldItalic-webfont.woff +0 -0
  663. package/docs/fonts/OpenSans-Italic-webfont.eot +0 -0
  664. package/docs/fonts/OpenSans-Italic-webfont.svg +0 -1830
  665. package/docs/fonts/OpenSans-Italic-webfont.woff +0 -0
  666. package/docs/fonts/OpenSans-Light-webfont.eot +0 -0
  667. package/docs/fonts/OpenSans-Light-webfont.svg +0 -1831
  668. package/docs/fonts/OpenSans-Light-webfont.woff +0 -0
  669. package/docs/fonts/OpenSans-LightItalic-webfont.eot +0 -0
  670. package/docs/fonts/OpenSans-LightItalic-webfont.svg +0 -1835
  671. package/docs/fonts/OpenSans-LightItalic-webfont.woff +0 -0
  672. package/docs/fonts/OpenSans-Regular-webfont.eot +0 -0
  673. package/docs/fonts/OpenSans-Regular-webfont.svg +0 -1831
  674. package/docs/fonts/OpenSans-Regular-webfont.woff +0 -0
  675. package/docs/fonts/OpenSans-Semibold-webfont.eot +0 -0
  676. package/docs/fonts/OpenSans-Semibold-webfont.svg +0 -1830
  677. package/docs/fonts/OpenSans-Semibold-webfont.ttf +0 -0
  678. package/docs/fonts/OpenSans-Semibold-webfont.woff +0 -0
  679. package/docs/fonts/OpenSans-SemiboldItalic-webfont.eot +0 -0
  680. package/docs/fonts/OpenSans-SemiboldItalic-webfont.svg +0 -1830
  681. package/docs/fonts/OpenSans-SemiboldItalic-webfont.ttf +0 -0
  682. package/docs/fonts/OpenSans-SemiboldItalic-webfont.woff +0 -0
  683. package/docs/global.html +0 -3996
  684. package/docs/hubs_basehub.js.html +0 -469
  685. package/docs/hubs_duplotrainbase.js.html +0 -112
  686. package/docs/hubs_hub.js.html +0 -121
  687. package/docs/hubs_mario.js.html +0 -108
  688. package/docs/hubs_movehub.js.html +0 -123
  689. package/docs/hubs_remotecontrol.js.html +0 -114
  690. package/docs/hubs_technicmediumhub.js.html +0 -119
  691. package/docs/hubs_technicsmallhub.js.html +0 -118
  692. package/docs/hubs_wedo2smarthub.js.html +0 -265
  693. package/docs/icons/home.svg +0 -4
  694. package/docs/icons/search.svg +0 -4
  695. package/docs/poweredup-browser.js.html +0 -292
  696. package/docs/poweredup-node.js.html +0 -250
  697. package/docs/scripts/linenumber.js +0 -25
  698. package/docs/scripts/pagelocation.js +0 -89
  699. package/docs/scripts/prettify/Apache-License-2.0.txt +0 -202
  700. package/docs/scripts/prettify/lang-css.js +0 -2
  701. package/docs/scripts/prettify/prettify.js +0 -28
  702. package/docs/styles/collapse.css +0 -27
  703. package/docs/styles/jsdoc-default.css +0 -358
  704. package/docs/styles/prettify-jsdoc.css +0 -111
  705. package/docs/styles/prettify-tomorrow.css +0 -132
  706. package/noble-mac.d.ts +0 -3
@@ -0,0 +1,778 @@
1
+ "use strict";
2
+ /**
3
+ * Hub - Main hub class for LEGO Powered UP hubs
4
+ *
5
+ * Follows the event-driven pattern from node-coral/node-wedo/node-controllab.
6
+ * Hubs emit device attach/detach events when peripherals are connected/disconnected.
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
21
+ }) : function(o, v) {
22
+ o["default"] = v;
23
+ });
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.DuploTrainBase = exports.RemoteControl = exports.TechnicMediumHub = exports.MoveHub = exports.WeDo2Hub = exports.LWP3Hub = exports.BaseHub = void 0;
43
+ exports.createHub = createHub;
44
+ const events_1 = require("events");
45
+ const types_1 = require("./types");
46
+ const connection_1 = require("./connection");
47
+ const Protocol = __importStar(require("./protocol"));
48
+ const WeDo2Protocol = __importStar(require("./protocol-wedo"));
49
+ const commands = __importStar(require("./commands"));
50
+ const devices_1 = require("./devices");
51
+ // ============================================================================
52
+ // Hub Base Class
53
+ // ============================================================================
54
+ /**
55
+ * Base class for all LEGO Powered UP hubs
56
+ */
57
+ class BaseHub extends events_1.EventEmitter {
58
+ constructor(peripheral, hubType) {
59
+ super();
60
+ this._ports = new Map();
61
+ this._devices = new Map(); // Registered device instances
62
+ this._isConnected = false;
63
+ this._peripheral = peripheral;
64
+ this.hubType = hubType;
65
+ this._properties = {
66
+ name: peripheral.name || "",
67
+ firmwareVersion: "",
68
+ hardwareVersion: "",
69
+ batteryLevel: 0,
70
+ rssi: peripheral.rssi || 0,
71
+ batteryType: types_1.BatteryType.NORMAL,
72
+ primaryMACAddress: "",
73
+ };
74
+ }
75
+ /**
76
+ * Get hub name
77
+ */
78
+ get name() {
79
+ return this._properties.name;
80
+ }
81
+ /**
82
+ * Get firmware version
83
+ */
84
+ get firmwareVersion() {
85
+ return this._properties.firmwareVersion;
86
+ }
87
+ /**
88
+ * Get hardware version
89
+ */
90
+ get hardwareVersion() {
91
+ return this._properties.hardwareVersion;
92
+ }
93
+ /**
94
+ * Get battery level (0-100)
95
+ */
96
+ get batteryLevel() {
97
+ return this._properties.batteryLevel;
98
+ }
99
+ /**
100
+ * Get RSSI signal strength
101
+ */
102
+ get rssi() {
103
+ return this._properties.rssi;
104
+ }
105
+ /**
106
+ * Check if hub is connected
107
+ */
108
+ get isConnected() {
109
+ return this._isConnected;
110
+ }
111
+ /**
112
+ * Get attached ports
113
+ */
114
+ get ports() {
115
+ return new Map(this._ports);
116
+ }
117
+ /**
118
+ * Get port info by port ID
119
+ */
120
+ getPort(portId) {
121
+ return this._ports.get(portId);
122
+ }
123
+ /**
124
+ * Get ports by device type
125
+ */
126
+ getPortsByType(deviceType) {
127
+ const result = [];
128
+ for (const [, port] of this._ports) {
129
+ if (port.deviceType === deviceType) {
130
+ result.push(port);
131
+ }
132
+ }
133
+ return result;
134
+ }
135
+ /**
136
+ * Wait for a device of a specific type to be attached
137
+ * @param deviceType The device type to wait for
138
+ * @param timeout Timeout in milliseconds (default: 10000)
139
+ * @returns Promise that resolves to the Device
140
+ */
141
+ async waitForDeviceByType(deviceType, timeout = 10000) {
142
+ // Check if device is already attached
143
+ for (const [portId, port] of this._ports) {
144
+ if (port.deviceType === deviceType) {
145
+ return this._getOrCreateDevice(portId, port);
146
+ }
147
+ }
148
+ // Wait for device to be attached
149
+ return new Promise((resolve, reject) => {
150
+ const timeoutId = setTimeout(() => {
151
+ this.removeListener("attach", attachHandler);
152
+ reject(new Error(`Timeout waiting for device type ${deviceType}`));
153
+ }, timeout);
154
+ const attachHandler = (deviceInfo) => {
155
+ if (deviceInfo.deviceType === deviceType) {
156
+ clearTimeout(timeoutId);
157
+ this.removeListener("attach", attachHandler);
158
+ resolve(this._getOrCreateDevice(deviceInfo.portId, deviceInfo));
159
+ }
160
+ };
161
+ this.on("attach", attachHandler);
162
+ });
163
+ }
164
+ /**
165
+ * Wait for a device at a specific port
166
+ * @param portName The port name (e.g., "A", "B", "LEFT", "RIGHT")
167
+ * @param timeout Timeout in milliseconds (default: 10000)
168
+ * @returns Promise that resolves to the Device
169
+ */
170
+ async waitForDeviceAtPort(portName, timeout = 10000) {
171
+ const portId = this._portNameToId(portName);
172
+ // Check if device is already attached
173
+ const existingPort = this._ports.get(portId);
174
+ if (existingPort) {
175
+ return this._getOrCreateDevice(portId, existingPort);
176
+ }
177
+ // Wait for device to be attached
178
+ return new Promise((resolve, reject) => {
179
+ const timeoutId = setTimeout(() => {
180
+ this.removeListener("attach", attachHandler);
181
+ reject(new Error(`Timeout waiting for device at port ${portName}`));
182
+ }, timeout);
183
+ const attachHandler = (deviceInfo) => {
184
+ if (deviceInfo.portId === portId) {
185
+ clearTimeout(timeoutId);
186
+ this.removeListener("attach", attachHandler);
187
+ resolve(this._getOrCreateDevice(portId, deviceInfo));
188
+ }
189
+ };
190
+ this.on("attach", attachHandler);
191
+ });
192
+ }
193
+ /**
194
+ * Get existing device or create and register a new one
195
+ */
196
+ _getOrCreateDevice(portId, portInfo) {
197
+ let device = this._devices.get(portId);
198
+ if (!device) {
199
+ device = (0, devices_1.createDevice)(this, portInfo);
200
+ this._devices.set(portId, device);
201
+ }
202
+ return device;
203
+ }
204
+ /**
205
+ * Convert port name to port ID
206
+ */
207
+ _portNameToId(portName) {
208
+ const name = portName.toUpperCase();
209
+ // WeDo2 uses different port IDs
210
+ if (this.hubType === types_1.HubType.WEDO2_SMART_HUB) {
211
+ switch (name) {
212
+ case "A": return 1;
213
+ case "B": return 2;
214
+ case "LED": return 6;
215
+ default:
216
+ const num = parseInt(portName, 10);
217
+ if (!isNaN(num))
218
+ return num;
219
+ throw new Error(`Unknown port name: ${portName}`);
220
+ }
221
+ }
222
+ // LWP3 hubs (Powered UP, Boost, Technic, etc.)
223
+ switch (name) {
224
+ case "A": return 0;
225
+ case "B": return 1;
226
+ case "C": return 2;
227
+ case "D": return 3;
228
+ case "LEFT": return 0;
229
+ case "RIGHT": return 1;
230
+ default:
231
+ // Try to parse as number
232
+ const num = parseInt(portName, 10);
233
+ if (!isNaN(num))
234
+ return num;
235
+ throw new Error(`Unknown port name: ${portName}`);
236
+ }
237
+ }
238
+ /**
239
+ * Sleep for a specified time
240
+ * @param ms Time to sleep in milliseconds
241
+ */
242
+ sleep(ms) {
243
+ return new Promise(resolve => setTimeout(resolve, ms));
244
+ }
245
+ // Event emitter type overrides
246
+ on(event, listener) {
247
+ return super.on(event, listener);
248
+ }
249
+ once(event, listener) {
250
+ return super.once(event, listener);
251
+ }
252
+ emit(event, ...args) {
253
+ return super.emit(event, ...args);
254
+ }
255
+ }
256
+ exports.BaseHub = BaseHub;
257
+ // ============================================================================
258
+ // LWP3 Hub (Powered UP, Boost, Technic, etc.)
259
+ // ============================================================================
260
+ /**
261
+ * Hub class for LWP3-based hubs (Powered UP, Boost Move Hub, Technic, etc.)
262
+ */
263
+ class LWP3Hub extends BaseHub {
264
+ constructor(peripheral, hubType) {
265
+ super(peripheral, hubType);
266
+ this._connection = new connection_1.LWP3Connection(peripheral);
267
+ }
268
+ /**
269
+ * Connect to the hub and initialize
270
+ */
271
+ async connect() {
272
+ // Set up message handler before connecting
273
+ this._connection.on("message", (message) => this._handleMessage(message));
274
+ this._connection.on("disconnect", () => this._handleDisconnect());
275
+ // Connect to the peripheral
276
+ await this._connection.open();
277
+ this._isConnected = true;
278
+ // Request hub properties
279
+ await this._requestHubProperties();
280
+ // Enable button notifications
281
+ await this._enableButtonNotifications();
282
+ this.emit("connect");
283
+ }
284
+ /**
285
+ * Disconnect from the hub
286
+ */
287
+ async disconnect() {
288
+ if (!this._isConnected)
289
+ return;
290
+ const message = commands.disconnect();
291
+ await this._connection.send(message);
292
+ await this._connection.close();
293
+ this._isConnected = false;
294
+ }
295
+ /**
296
+ * Shutdown the hub (power off)
297
+ */
298
+ async shutdown() {
299
+ if (!this._isConnected)
300
+ return;
301
+ const message = commands.shutdown();
302
+ await this._connection.send(message);
303
+ this._isConnected = false;
304
+ }
305
+ /**
306
+ * Set the hub name
307
+ */
308
+ async setName(name) {
309
+ const message = commands.setName(name);
310
+ await this._connection.send(message);
311
+ this._properties.name = name;
312
+ }
313
+ /**
314
+ * Set the hub LED color
315
+ */
316
+ async setLEDColor(color) {
317
+ const ledPort = this._findPortByDeviceType(types_1.DeviceType.HUB_LED);
318
+ if (ledPort === undefined) {
319
+ throw new Error("Hub LED not found");
320
+ }
321
+ const message = commands.ledColor(ledPort, color);
322
+ await this._connection.send(message);
323
+ }
324
+ /**
325
+ * Set the hub LED to RGB color
326
+ */
327
+ async setLEDRGB(red, green, blue) {
328
+ const ledPort = this._findPortByDeviceType(types_1.DeviceType.HUB_LED);
329
+ if (ledPort === undefined) {
330
+ throw new Error("Hub LED not found");
331
+ }
332
+ const message = commands.ledRGB(ledPort, red, green, blue);
333
+ await this._connection.send(message);
334
+ }
335
+ /**
336
+ * Run a motor at a given power level (-100 to 100)
337
+ */
338
+ async motorPower(portId, power) {
339
+ const message = commands.motorPower(portId, power);
340
+ await this._connection.send(message);
341
+ }
342
+ /**
343
+ * Run a motor at a given speed (-100 to 100) with power regulation
344
+ */
345
+ async motorSpeed(portId, speed, maxPower = 100) {
346
+ const message = commands.motorSpeed(portId, speed, maxPower);
347
+ await this._connection.send(message);
348
+ }
349
+ /**
350
+ * Run a motor for a specified time
351
+ */
352
+ async motorRunForTime(portId, time, speed, maxPower = 100, endState = types_1.BrakingStyle.BRAKE) {
353
+ const message = commands.motorRunForTime(portId, time, speed, maxPower, endState);
354
+ await this._connection.send(message);
355
+ }
356
+ /**
357
+ * Run a motor for a specified number of degrees
358
+ */
359
+ async motorRunForDegrees(portId, degrees, speed, maxPower = 100, endState = types_1.BrakingStyle.BRAKE) {
360
+ const message = commands.motorRunForDegrees(portId, degrees, speed, maxPower, endState);
361
+ await this._connection.send(message);
362
+ }
363
+ /**
364
+ * Move motor to absolute position
365
+ */
366
+ async motorGotoPosition(portId, position, speed, maxPower = 100, endState = types_1.BrakingStyle.BRAKE) {
367
+ const message = commands.motorGotoPosition(portId, position, speed, maxPower, endState);
368
+ await this._connection.send(message);
369
+ }
370
+ /**
371
+ * Stop a motor
372
+ */
373
+ async motorStop(portId) {
374
+ const message = commands.motorStop(portId);
375
+ await this._connection.send(message);
376
+ }
377
+ /**
378
+ * Brake a motor
379
+ */
380
+ async motorBrake(portId) {
381
+ const message = commands.motorBrake(portId);
382
+ await this._connection.send(message);
383
+ }
384
+ /**
385
+ * Subscribe to sensor updates on a port
386
+ */
387
+ async subscribe(portId, mode = 0, deltaInterval = 1) {
388
+ const message = commands.subscribe(portId, mode, deltaInterval);
389
+ await this._connection.send(message);
390
+ }
391
+ /**
392
+ * Unsubscribe from sensor updates on a port
393
+ */
394
+ async unsubscribe(portId, mode = 0) {
395
+ const message = commands.unsubscribe(portId, mode);
396
+ await this._connection.send(message);
397
+ }
398
+ /**
399
+ * Send raw command to the hub
400
+ */
401
+ async sendRaw(data) {
402
+ await this._connection.send(data);
403
+ }
404
+ // ========================================================================
405
+ // Private methods
406
+ // ========================================================================
407
+ async _requestHubProperties() {
408
+ // Request hub name
409
+ await this._connection.send(commands.requestProperty(Protocol.HubProperty.ADVERTISING_NAME));
410
+ // Request firmware version
411
+ await this._connection.send(commands.requestProperty(Protocol.HubProperty.FW_VERSION));
412
+ // Request hardware version
413
+ await this._connection.send(commands.requestProperty(Protocol.HubProperty.HW_VERSION));
414
+ // Request battery level and enable updates
415
+ await this._connection.send(commands.requestProperty(Protocol.HubProperty.BATTERY_VOLTAGE));
416
+ await this._connection.send(commands.enablePropertyUpdates(Protocol.HubProperty.BATTERY_VOLTAGE));
417
+ }
418
+ async _enableButtonNotifications() {
419
+ await this._connection.send(commands.enablePropertyUpdates(Protocol.HubProperty.BUTTON));
420
+ }
421
+ _handleMessage(message) {
422
+ switch (message.type) {
423
+ case Protocol.MessageType.HUB_PROPERTIES:
424
+ this._handleHubProperty(message);
425
+ break;
426
+ case Protocol.MessageType.HUB_ATTACHED_IO:
427
+ this._handleAttachedIO(message);
428
+ break;
429
+ case Protocol.MessageType.PORT_VALUE_SINGLE:
430
+ this._handlePortValue(message);
431
+ break;
432
+ case Protocol.MessageType.PORT_OUTPUT_COMMAND_FEEDBACK:
433
+ this._handleCommandFeedback(message);
434
+ break;
435
+ case Protocol.MessageType.HUB_ALERTS:
436
+ this._handleAlert(message);
437
+ break;
438
+ case Protocol.MessageType.GENERIC_ERROR_MESSAGES:
439
+ this._handleError(message);
440
+ break;
441
+ }
442
+ }
443
+ _handleHubProperty(message) {
444
+ switch (message.property) {
445
+ case Protocol.HubProperty.ADVERTISING_NAME:
446
+ this._properties.name = message.payload.toString("ascii");
447
+ break;
448
+ case Protocol.HubProperty.FW_VERSION:
449
+ this._properties.firmwareVersion = this._parseVersion(message.payload);
450
+ break;
451
+ case Protocol.HubProperty.HW_VERSION:
452
+ this._properties.hardwareVersion = this._parseVersion(message.payload);
453
+ break;
454
+ case Protocol.HubProperty.BATTERY_VOLTAGE:
455
+ this._properties.batteryLevel = message.payload[0];
456
+ this.emit("batteryLevel", this._properties.batteryLevel);
457
+ break;
458
+ case Protocol.HubProperty.BUTTON:
459
+ const buttonState = message.payload[0] === 1 ? types_1.ButtonState.PRESSED : types_1.ButtonState.RELEASED;
460
+ this.emit("button", buttonState);
461
+ break;
462
+ case Protocol.HubProperty.RSSI:
463
+ this._properties.rssi = message.payload.readInt8(0);
464
+ this.emit("rssi", this._properties.rssi);
465
+ break;
466
+ }
467
+ }
468
+ _handleAttachedIO(message) {
469
+ const portId = message.portId;
470
+ const event = message.event;
471
+ switch (event) {
472
+ case types_1.PortEvent.ATTACHED:
473
+ case types_1.PortEvent.ATTACHED_VIRTUAL: {
474
+ const deviceType = message.deviceType;
475
+ const deviceInfo = {
476
+ portId,
477
+ deviceType,
478
+ hardwareRevision: message.hardwareRevision,
479
+ softwareRevision: message.softwareRevision,
480
+ };
481
+ this._ports.set(portId, deviceInfo);
482
+ this.emit("attach", deviceInfo);
483
+ break;
484
+ }
485
+ case types_1.PortEvent.DETACHED: {
486
+ const deviceInfo = this._ports.get(portId);
487
+ if (deviceInfo) {
488
+ this._ports.delete(portId);
489
+ this.emit("detach", portId);
490
+ }
491
+ break;
492
+ }
493
+ }
494
+ }
495
+ _handlePortValue(message) {
496
+ const device = this._devices.get(message.portId);
497
+ if (device && typeof device.handlePortValue === "function") {
498
+ device.handlePortValue(message.value);
499
+ }
500
+ }
501
+ _handleCommandFeedback(message) {
502
+ // Command feedback can be used for promise resolution
503
+ }
504
+ _handleAlert(message) {
505
+ this.emit("alert", message.alertType);
506
+ }
507
+ _handleError(message) {
508
+ this.emit("error", new Error(`Hub error: command 0x${message.commandType.toString(16)}, error 0x${message.errorCode.toString(16)}`));
509
+ }
510
+ _handleDisconnect() {
511
+ this._isConnected = false;
512
+ this._ports.clear();
513
+ this.emit("disconnect");
514
+ }
515
+ _findPortByDeviceType(deviceType) {
516
+ for (const [portId, port] of this._ports) {
517
+ if (port.deviceType === deviceType) {
518
+ return portId;
519
+ }
520
+ }
521
+ return undefined;
522
+ }
523
+ _parseVersion(buffer) {
524
+ if (buffer.length < 4)
525
+ return "";
526
+ const version = buffer.readUInt32LE(0);
527
+ const major = (version >> 28) & 0x0f;
528
+ const minor = (version >> 24) & 0x0f;
529
+ const bugfix = (version >> 16) & 0xff;
530
+ const build = version & 0xffff;
531
+ return `${major}.${minor}.${bugfix}.${build}`;
532
+ }
533
+ }
534
+ exports.LWP3Hub = LWP3Hub;
535
+ // ============================================================================
536
+ // WeDo 2.0 Hub
537
+ // ============================================================================
538
+ /**
539
+ * Hub class for WeDo 2.0 Smart Hub
540
+ */
541
+ class WeDo2Hub extends BaseHub {
542
+ constructor(peripheral) {
543
+ super(peripheral, types_1.HubType.WEDO2_SMART_HUB);
544
+ this._connection = new connection_1.WeDo2Connection(peripheral);
545
+ }
546
+ /**
547
+ * Connect to the hub and initialize
548
+ */
549
+ async connect() {
550
+ // Set up message handlers - WeDo2Connection emits separate events for each message type
551
+ this._connection.on("port", (message) => this._handlePortInfo(message));
552
+ this._connection.on("sensor", (message) => this._handleSensorValue(message));
553
+ this._connection.on("button", (message) => this._handleButton(message));
554
+ this._connection.on("battery", (message) => this._handleBattery(message));
555
+ this._connection.on("disconnect", () => this._handleDisconnect());
556
+ // Connect to the peripheral
557
+ await this._connection.open();
558
+ this._isConnected = true;
559
+ // Note: Internal devices (LED, voltage, current, piezo) are detected via
560
+ // PORT_TYPE notifications during connection, so no manual registration needed
561
+ this.emit("connect");
562
+ }
563
+ /**
564
+ * Disconnect from the hub
565
+ */
566
+ async disconnect() {
567
+ if (!this._isConnected)
568
+ return;
569
+ await this._connection.close();
570
+ this._isConnected = false;
571
+ }
572
+ /**
573
+ * Shutdown the hub (WeDo 2.0 doesn't support remote shutdown)
574
+ */
575
+ async shutdown() {
576
+ await this.disconnect();
577
+ }
578
+ /**
579
+ * Set the hub name
580
+ */
581
+ async setName(name) {
582
+ const message = WeDo2Protocol.createWeDo2SetName(name);
583
+ await this._connection.send(WeDo2Protocol.WEDO2_CHARACTERISTICS.NAME_ID, message);
584
+ this._properties.name = name;
585
+ }
586
+ /**
587
+ * Set the hub LED color
588
+ */
589
+ async setLEDColor(color) {
590
+ const message = WeDo2Protocol.createWeDo2LEDColor(WeDo2Protocol.WEDO2_PORT_MAP.HUB_LED, color);
591
+ await this._connection.send(WeDo2Protocol.WEDO2_CHARACTERISTICS.MOTOR_VALUE_WRITE, message);
592
+ }
593
+ /**
594
+ * Set the hub LED to RGB color
595
+ */
596
+ async setLEDRGB(red, green, blue) {
597
+ const message = WeDo2Protocol.createWeDo2LEDRGB(WeDo2Protocol.WEDO2_PORT_MAP.HUB_LED, red, green, blue);
598
+ await this._connection.send(WeDo2Protocol.WEDO2_CHARACTERISTICS.MOTOR_VALUE_WRITE, message);
599
+ }
600
+ /**
601
+ * Run a motor at a given power level (-100 to 100)
602
+ */
603
+ async motorPower(portId, power) {
604
+ const message = WeDo2Protocol.createWeDo2MotorPower(portId, power);
605
+ await this._connection.send(WeDo2Protocol.WEDO2_CHARACTERISTICS.MOTOR_VALUE_WRITE, message);
606
+ }
607
+ /**
608
+ * Stop a motor
609
+ */
610
+ async motorStop(portId) {
611
+ await this.motorPower(portId, 0);
612
+ }
613
+ /**
614
+ * Play a tone
615
+ */
616
+ async playTone(frequency, duration) {
617
+ const message = WeDo2Protocol.createWeDo2PiezoTone(WeDo2Protocol.WEDO2_PORT_MAP.PIEZO, frequency, duration);
618
+ await this._connection.send(WeDo2Protocol.WEDO2_CHARACTERISTICS.MOTOR_VALUE_WRITE, message);
619
+ }
620
+ /**
621
+ * Stop tone playback
622
+ */
623
+ async stopTone() {
624
+ const message = WeDo2Protocol.createWeDo2PiezoStop(WeDo2Protocol.WEDO2_PORT_MAP.PIEZO);
625
+ await this._connection.send(WeDo2Protocol.WEDO2_CHARACTERISTICS.MOTOR_VALUE_WRITE, message);
626
+ }
627
+ /**
628
+ * Set sensor mode
629
+ */
630
+ async setSensorMode(portId, mode) {
631
+ const deviceInfo = this._ports.get(portId);
632
+ if (!deviceInfo) {
633
+ throw new Error(`Port ${portId} not found`);
634
+ }
635
+ const message = WeDo2Protocol.createWeDo2Subscribe(portId, deviceInfo.deviceType, mode, true);
636
+ await this._connection.send(WeDo2Protocol.WEDO2_CHARACTERISTICS.PORT_TYPE_WRITE, message);
637
+ }
638
+ /**
639
+ * Send raw command
640
+ */
641
+ async sendRaw(characteristicUUID, data) {
642
+ await this._connection.send(characteristicUUID, data);
643
+ }
644
+ // ========================================================================
645
+ // Private methods
646
+ // ========================================================================
647
+ _handleMessage(message) {
648
+ switch (message.kind) {
649
+ case "port":
650
+ this._handlePortInfo(message);
651
+ break;
652
+ case "sensor":
653
+ this._handleSensorValue(message);
654
+ break;
655
+ case "button":
656
+ this._handleButton(message);
657
+ break;
658
+ case "battery":
659
+ this._handleBattery(message);
660
+ break;
661
+ }
662
+ }
663
+ _handlePortInfo(message) {
664
+ const portId = message.portId;
665
+ const deviceType = message.deviceType;
666
+ if (deviceType !== types_1.DeviceType.UNKNOWN) {
667
+ const deviceInfo = {
668
+ portId,
669
+ deviceType: deviceType,
670
+ };
671
+ this._ports.set(portId, deviceInfo);
672
+ this.emit("attach", deviceInfo);
673
+ }
674
+ else {
675
+ const deviceInfo = this._ports.get(portId);
676
+ if (deviceInfo) {
677
+ this._ports.delete(portId);
678
+ this.emit("detach", portId);
679
+ }
680
+ }
681
+ }
682
+ _handleSensorValue(message) {
683
+ // Sensor value events are handled by device classes
684
+ }
685
+ _handleButton(message) {
686
+ const buttonState = message.pressed ? types_1.ButtonState.PRESSED : types_1.ButtonState.RELEASED;
687
+ this.emit("button", buttonState);
688
+ }
689
+ _handleBattery(message) {
690
+ this._properties.batteryLevel = message.level;
691
+ this.emit("batteryLevel", message.level);
692
+ }
693
+ _handleDisconnect() {
694
+ this._isConnected = false;
695
+ this._ports.clear();
696
+ this.emit("disconnect");
697
+ }
698
+ }
699
+ exports.WeDo2Hub = WeDo2Hub;
700
+ // ============================================================================
701
+ // Hub Factory
702
+ // ============================================================================
703
+ /**
704
+ * Create a hub instance based on the hub type
705
+ */
706
+ function createHub(peripheral, hubType) {
707
+ switch (hubType) {
708
+ case types_1.HubType.WEDO2_SMART_HUB:
709
+ return new WeDo2Hub(peripheral);
710
+ case types_1.HubType.MOVE_HUB:
711
+ return new MoveHub(peripheral);
712
+ case types_1.HubType.TECHNIC_MEDIUM_HUB:
713
+ return new TechnicMediumHub(peripheral);
714
+ case types_1.HubType.REMOTE_CONTROL:
715
+ return new RemoteControl(peripheral);
716
+ case types_1.HubType.DUPLO_TRAIN_BASE:
717
+ return new DuploTrainBase(peripheral);
718
+ default:
719
+ return new LWP3Hub(peripheral, hubType);
720
+ }
721
+ }
722
+ // ============================================================================
723
+ // Specialized Hub Classes
724
+ // ============================================================================
725
+ /**
726
+ * Move Hub (Boost) with built-in tilt sensor and motors
727
+ */
728
+ class MoveHub extends LWP3Hub {
729
+ constructor(peripheral) {
730
+ super(peripheral, types_1.HubType.MOVE_HUB);
731
+ }
732
+ get motorAPort() { return 0; }
733
+ get motorBPort() { return 1; }
734
+ get tiltSensorPort() { return 58; }
735
+ get colorSensorPort() { return 59; }
736
+ }
737
+ exports.MoveHub = MoveHub;
738
+ /**
739
+ * Technic Medium Hub with gyro and accelerometer
740
+ */
741
+ class TechnicMediumHub extends LWP3Hub {
742
+ constructor(peripheral) {
743
+ super(peripheral, types_1.HubType.TECHNIC_MEDIUM_HUB);
744
+ }
745
+ get gyroPort() { return 99; }
746
+ get accelerometerPort() { return 97; }
747
+ get tiltSensorPort() { return 98; }
748
+ }
749
+ exports.TechnicMediumHub = TechnicMediumHub;
750
+ /**
751
+ * Remote Control
752
+ */
753
+ class RemoteControl extends LWP3Hub {
754
+ constructor(peripheral) {
755
+ super(peripheral, types_1.HubType.REMOTE_CONTROL);
756
+ }
757
+ get leftButtonPort() { return 0; }
758
+ get rightButtonPort() { return 1; }
759
+ }
760
+ exports.RemoteControl = RemoteControl;
761
+ /**
762
+ * Duplo Train Base
763
+ */
764
+ class DuploTrainBase extends LWP3Hub {
765
+ constructor(peripheral) {
766
+ super(peripheral, types_1.HubType.DUPLO_TRAIN_BASE);
767
+ }
768
+ get motorPort() { return 0; }
769
+ get colorSensorPort() { return 18; }
770
+ get speedometerPort() { return 19; }
771
+ get speakerPort() { return 1; }
772
+ async playSound(sound) {
773
+ const message = commands.duploTrainSound(this.speakerPort, sound);
774
+ await this._connection.send(message);
775
+ }
776
+ }
777
+ exports.DuploTrainBase = DuploTrainBase;
778
+ //# sourceMappingURL=hub.js.map