node-poweredup 8.0.5 → 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 (763) hide show
  1. package/.drone.yml +2 -2
  2. package/.gitmodules +0 -3
  3. package/README.md +6 -11
  4. package/dist/color.d.ts +7 -0
  5. package/dist/color.d.ts.map +1 -0
  6. package/dist/color.js +15 -0
  7. package/dist/color.js.map +1 -0
  8. package/dist/consts.d.ts +645 -0
  9. package/dist/consts.d.ts.map +1 -0
  10. package/dist/consts.js +675 -0
  11. package/dist/consts.js.map +1 -0
  12. package/dist/devices/absolutemotor.d.ts +41 -0
  13. package/dist/devices/absolutemotor.d.ts.map +1 -0
  14. package/dist/devices/absolutemotor.js +115 -0
  15. package/dist/devices/absolutemotor.js.map +1 -0
  16. package/dist/devices/basicmotor.d.ts +37 -0
  17. package/dist/devices/basicmotor.d.ts.map +1 -0
  18. package/dist/devices/basicmotor.js +57 -0
  19. package/dist/devices/basicmotor.js.map +1 -0
  20. package/dist/devices/colordistancesensor.d.ts +74 -0
  21. package/dist/devices/colordistancesensor.d.ts.map +1 -0
  22. package/dist/devices/colordistancesensor.js +278 -0
  23. package/dist/devices/colordistancesensor.js.map +1 -0
  24. package/dist/devices/currentsensor.d.ts +17 -0
  25. package/dist/devices/currentsensor.d.ts.map +1 -0
  26. package/dist/devices/currentsensor.js +55 -0
  27. package/dist/devices/currentsensor.js.map +1 -0
  28. package/dist/devices/device.d.ts +72 -0
  29. package/dist/devices/device.d.ts.map +1 -0
  30. package/dist/devices/device.js +162 -0
  31. package/dist/devices/device.js.map +1 -0
  32. package/dist/devices/duplotrainbasecolorsensor.d.ts +20 -0
  33. package/dist/devices/duplotrainbasecolorsensor.d.ts.map +1 -0
  34. package/dist/devices/duplotrainbasecolorsensor.js +77 -0
  35. package/dist/devices/duplotrainbasecolorsensor.js.map +1 -0
  36. package/dist/devices/duplotrainbasemotor.d.ts +10 -0
  37. package/dist/devices/duplotrainbasemotor.d.ts.map +1 -0
  38. package/dist/devices/duplotrainbasemotor.js +12 -0
  39. package/dist/devices/duplotrainbasemotor.js.map +1 -0
  40. package/dist/devices/duplotrainbasespeaker.d.ts +27 -0
  41. package/dist/devices/duplotrainbasespeaker.d.ts.map +1 -0
  42. package/dist/devices/duplotrainbasespeaker.js +38 -0
  43. package/dist/devices/duplotrainbasespeaker.js.map +1 -0
  44. package/dist/devices/duplotrainbasespeedometer.d.ts +17 -0
  45. package/dist/devices/duplotrainbasespeedometer.d.ts.map +1 -0
  46. package/dist/devices/duplotrainbasespeedometer.js +34 -0
  47. package/dist/devices/duplotrainbasespeedometer.js.map +1 -0
  48. package/dist/devices/hubled.d.ts +28 -0
  49. package/dist/devices/hubled.d.ts.map +1 -0
  50. package/dist/devices/hubled.js +58 -0
  51. package/dist/devices/hubled.js.map +1 -0
  52. package/dist/devices/light.d.ts +24 -0
  53. package/dist/devices/light.d.ts.map +1 -0
  54. package/dist/devices/light.js +44 -0
  55. package/dist/devices/light.js.map +1 -0
  56. package/dist/devices/marioaccelerometer.d.ts +18 -0
  57. package/dist/devices/marioaccelerometer.d.ts.map +1 -0
  58. package/dist/devices/marioaccelerometer.js +50 -0
  59. package/dist/devices/marioaccelerometer.js.map +1 -0
  60. package/dist/devices/mariobarcodesensor.d.ts +18 -0
  61. package/dist/devices/mariobarcodesensor.d.ts.map +1 -0
  62. package/dist/devices/mariobarcodesensor.js +58 -0
  63. package/dist/devices/mariobarcodesensor.js.map +1 -0
  64. package/dist/devices/mariopantssensor.d.ts +17 -0
  65. package/dist/devices/mariopantssensor.d.ts.map +1 -0
  66. package/dist/devices/mariopantssensor.js +34 -0
  67. package/dist/devices/mariopantssensor.js.map +1 -0
  68. package/dist/devices/mediumlinearmotor.d.ts +10 -0
  69. package/dist/devices/mediumlinearmotor.d.ts.map +1 -0
  70. package/dist/devices/mediumlinearmotor.js +12 -0
  71. package/dist/devices/mediumlinearmotor.js.map +1 -0
  72. package/dist/devices/motionsensor.d.ts +17 -0
  73. package/dist/devices/motionsensor.d.ts.map +1 -0
  74. package/dist/devices/motionsensor.js +38 -0
  75. package/dist/devices/motionsensor.js.map +1 -0
  76. package/dist/devices/movehubmediumlinearmotor.d.ts +10 -0
  77. package/dist/devices/movehubmediumlinearmotor.d.ts.map +1 -0
  78. package/dist/devices/movehubmediumlinearmotor.js +12 -0
  79. package/dist/devices/movehubmediumlinearmotor.js.map +1 -0
  80. package/dist/devices/movehubtiltsensor.d.ts +17 -0
  81. package/dist/devices/movehubtiltsensor.d.ts.map +1 -0
  82. package/dist/devices/movehubtiltsensor.js +36 -0
  83. package/dist/devices/movehubtiltsensor.js.map +1 -0
  84. package/dist/devices/piezobuzzer.d.ts +17 -0
  85. package/dist/devices/piezobuzzer.d.ts.map +1 -0
  86. package/dist/devices/piezobuzzer.js +27 -0
  87. package/dist/devices/piezobuzzer.js.map +1 -0
  88. package/dist/devices/remotecontrolbutton.d.ts +20 -0
  89. package/dist/devices/remotecontrolbutton.d.ts.map +1 -0
  90. package/dist/devices/remotecontrolbutton.js +40 -0
  91. package/dist/devices/remotecontrolbutton.js.map +1 -0
  92. package/dist/devices/simplemediumlinearmotor.d.ts +10 -0
  93. package/dist/devices/simplemediumlinearmotor.d.ts.map +1 -0
  94. package/dist/devices/simplemediumlinearmotor.js +12 -0
  95. package/dist/devices/simplemediumlinearmotor.js.map +1 -0
  96. package/dist/devices/tachomotor.d.ts +65 -0
  97. package/dist/devices/tachomotor.d.ts.map +1 -0
  98. package/dist/devices/tachomotor.js +161 -0
  99. package/dist/devices/tachomotor.js.map +1 -0
  100. package/dist/devices/technic3x3colorlightmatrix.d.ts +22 -0
  101. package/dist/devices/technic3x3colorlightmatrix.d.ts.map +1 -0
  102. package/dist/devices/technic3x3colorlightmatrix.js +53 -0
  103. package/dist/devices/technic3x3colorlightmatrix.js.map +1 -0
  104. package/dist/devices/techniccolorsensor.d.ts +27 -0
  105. package/dist/devices/techniccolorsensor.d.ts.map +1 -0
  106. package/dist/devices/techniccolorsensor.js +71 -0
  107. package/dist/devices/techniccolorsensor.js.map +1 -0
  108. package/dist/devices/technicdistancesensor.d.ts +27 -0
  109. package/dist/devices/technicdistancesensor.d.ts.map +1 -0
  110. package/dist/devices/technicdistancesensor.js +57 -0
  111. package/dist/devices/technicdistancesensor.js.map +1 -0
  112. package/dist/devices/technicforcesensor.d.ts +19 -0
  113. package/dist/devices/technicforcesensor.d.ts.map +1 -0
  114. package/dist/devices/technicforcesensor.js +58 -0
  115. package/dist/devices/technicforcesensor.js.map +1 -0
  116. package/dist/devices/techniclargeangularmotor.d.ts +13 -0
  117. package/dist/devices/techniclargeangularmotor.d.ts.map +1 -0
  118. package/dist/devices/techniclargeangularmotor.js +12 -0
  119. package/dist/devices/techniclargeangularmotor.js.map +1 -0
  120. package/dist/devices/techniclargelinearmotor.d.ts +10 -0
  121. package/dist/devices/techniclargelinearmotor.d.ts.map +1 -0
  122. package/dist/devices/techniclargelinearmotor.js +12 -0
  123. package/dist/devices/techniclargelinearmotor.js.map +1 -0
  124. package/dist/devices/technicmediumangularmotor.d.ts +13 -0
  125. package/dist/devices/technicmediumangularmotor.d.ts.map +1 -0
  126. package/dist/devices/technicmediumangularmotor.js +12 -0
  127. package/dist/devices/technicmediumangularmotor.js.map +1 -0
  128. package/dist/devices/technicmediumhubaccelerometersensor.d.ts +17 -0
  129. package/dist/devices/technicmediumhubaccelerometersensor.d.ts.map +1 -0
  130. package/dist/devices/technicmediumhubaccelerometersensor.js +38 -0
  131. package/dist/devices/technicmediumhubaccelerometersensor.js.map +1 -0
  132. package/dist/devices/technicmediumhubgyrosensor.d.ts +17 -0
  133. package/dist/devices/technicmediumhubgyrosensor.d.ts.map +1 -0
  134. package/dist/devices/technicmediumhubgyrosensor.js +38 -0
  135. package/dist/devices/technicmediumhubgyrosensor.js.map +1 -0
  136. package/dist/devices/technicmediumhubtiltsensor.d.ts +38 -0
  137. package/dist/devices/technicmediumhubtiltsensor.d.ts.map +1 -0
  138. package/dist/devices/technicmediumhubtiltsensor.js +103 -0
  139. package/dist/devices/technicmediumhubtiltsensor.js.map +1 -0
  140. package/dist/devices/technicsmallangularmotor.d.ts +13 -0
  141. package/dist/devices/technicsmallangularmotor.d.ts.map +1 -0
  142. package/dist/devices/technicsmallangularmotor.js +12 -0
  143. package/dist/devices/technicsmallangularmotor.js.map +1 -0
  144. package/dist/devices/technicxlargelinearmotor.d.ts +10 -0
  145. package/dist/devices/technicxlargelinearmotor.d.ts.map +1 -0
  146. package/dist/devices/technicxlargelinearmotor.js +12 -0
  147. package/dist/devices/technicxlargelinearmotor.js.map +1 -0
  148. package/dist/devices/tiltsensor.d.ts +17 -0
  149. package/dist/devices/tiltsensor.d.ts.map +1 -0
  150. package/dist/devices/tiltsensor.js +36 -0
  151. package/dist/devices/tiltsensor.js.map +1 -0
  152. package/dist/devices/trainmotor.d.ts +10 -0
  153. package/dist/devices/trainmotor.d.ts.map +1 -0
  154. package/dist/devices/trainmotor.js +12 -0
  155. package/dist/devices/trainmotor.js.map +1 -0
  156. package/dist/devices/voltagesensor.d.ts +17 -0
  157. package/dist/devices/voltagesensor.d.ts.map +1 -0
  158. package/dist/devices/voltagesensor.js +59 -0
  159. package/dist/devices/voltagesensor.js.map +1 -0
  160. package/dist/hubs/basehub.d.ts +154 -0
  161. package/dist/hubs/basehub.d.ts.map +1 -0
  162. package/dist/hubs/basehub.js +383 -0
  163. package/dist/hubs/basehub.js.map +1 -0
  164. package/dist/hubs/duplotrainbase.d.ts +18 -0
  165. package/dist/hubs/duplotrainbase.d.ts.map +1 -0
  166. package/dist/hubs/duplotrainbase.js +35 -0
  167. package/dist/hubs/duplotrainbase.js.map +1 -0
  168. package/dist/hubs/hub.d.ts +20 -0
  169. package/dist/hubs/hub.d.ts.map +1 -0
  170. package/dist/hubs/hub.js +44 -0
  171. package/dist/hubs/hub.js.map +1 -0
  172. package/dist/hubs/lpf2hub.d.ts +46 -0
  173. package/dist/hubs/lpf2hub.d.ts.map +1 -0
  174. package/dist/hubs/lpf2hub.js +311 -0
  175. package/dist/hubs/lpf2hub.js.map +1 -0
  176. package/dist/hubs/mario.d.ts +18 -0
  177. package/dist/hubs/mario.d.ts.map +1 -0
  178. package/dist/hubs/mario.js +31 -0
  179. package/dist/hubs/mario.js.map +1 -0
  180. package/dist/hubs/movehub.d.ts +19 -0
  181. package/dist/hubs/movehub.d.ts.map +1 -0
  182. package/dist/hubs/movehub.js +46 -0
  183. package/dist/hubs/movehub.js.map +1 -0
  184. package/dist/hubs/remotecontrol.d.ts +18 -0
  185. package/dist/hubs/remotecontrol.d.ts.map +1 -0
  186. package/dist/hubs/remotecontrol.js +37 -0
  187. package/dist/hubs/remotecontrol.js.map +1 -0
  188. package/dist/hubs/technicmediumhub.d.ts +18 -0
  189. package/dist/hubs/technicmediumhub.d.ts.map +1 -0
  190. package/dist/hubs/technicmediumhub.js +42 -0
  191. package/dist/hubs/technicmediumhub.js.map +1 -0
  192. package/dist/hubs/technicsmallhub.d.ts +19 -0
  193. package/dist/hubs/technicsmallhub.d.ts.map +1 -0
  194. package/dist/hubs/technicsmallhub.js +41 -0
  195. package/dist/hubs/technicsmallhub.js.map +1 -0
  196. package/dist/hubs/wedo2smarthub.d.ts +39 -0
  197. package/dist/hubs/wedo2smarthub.d.ts.map +1 -0
  198. package/dist/hubs/wedo2smarthub.js +186 -0
  199. package/dist/hubs/wedo2smarthub.js.map +1 -0
  200. package/dist/index-browser.d.ts +2 -0
  201. package/dist/index-browser.d.ts.map +1 -0
  202. package/dist/index-browser.js +96 -0
  203. package/dist/index-browser.js.map +1 -0
  204. package/dist/index-node.d.ts +50 -0
  205. package/dist/index-node.d.ts.map +1 -0
  206. package/dist/index-node.js +50 -0
  207. package/dist/index-node.js.map +1 -0
  208. package/dist/interfaces.d.ts +24 -0
  209. package/dist/interfaces.d.ts.map +1 -0
  210. package/dist/interfaces.js +2 -0
  211. package/dist/interfaces.js.map +1 -0
  212. package/dist/nobleabstraction.d.ts +27 -0
  213. package/dist/nobleabstraction.d.ts.map +1 -0
  214. package/dist/nobleabstraction.js +121 -0
  215. package/dist/nobleabstraction.js.map +1 -0
  216. package/dist/node/color.js +2 -25
  217. package/dist/node/color.js.map +1 -1
  218. package/dist/node/commands.d.ts +299 -0
  219. package/dist/node/commands.js +672 -0
  220. package/dist/node/commands.js.map +1 -0
  221. package/dist/node/connection.d.ts +187 -0
  222. package/dist/node/connection.js +478 -0
  223. package/dist/node/connection.js.map +1 -0
  224. package/dist/node/consts.d.ts +21 -21
  225. package/dist/node/consts.js +57 -60
  226. package/dist/node/consts.js.map +1 -1
  227. package/dist/node/devices/absolutemotor.d.ts +0 -1
  228. package/dist/node/devices/absolutemotor.js +14 -37
  229. package/dist/node/devices/absolutemotor.js.map +1 -1
  230. package/dist/node/devices/basicmotor.d.ts +3 -3
  231. package/dist/node/devices/basicmotor.js +6 -29
  232. package/dist/node/devices/basicmotor.js.map +1 -1
  233. package/dist/node/devices/colordistancesensor.d.ts +4 -5
  234. package/dist/node/devices/colordistancesensor.js +11 -34
  235. package/dist/node/devices/colordistancesensor.js.map +1 -1
  236. package/dist/node/devices/currentsensor.d.ts +0 -1
  237. package/dist/node/devices/currentsensor.js +7 -30
  238. package/dist/node/devices/currentsensor.js.map +1 -1
  239. package/dist/node/devices/device.d.ts +5 -6
  240. package/dist/node/devices/device.js +3 -26
  241. package/dist/node/devices/device.js.map +1 -1
  242. package/dist/node/devices/duplotrainbasecolorsensor.d.ts +0 -1
  243. package/dist/node/devices/duplotrainbasecolorsensor.js +9 -32
  244. package/dist/node/devices/duplotrainbasecolorsensor.js.map +1 -1
  245. package/dist/node/devices/duplotrainbasemotor.js +3 -26
  246. package/dist/node/devices/duplotrainbasemotor.js.map +1 -1
  247. package/dist/node/devices/duplotrainbasespeaker.js +5 -28
  248. package/dist/node/devices/duplotrainbasespeaker.js.map +1 -1
  249. package/dist/node/devices/duplotrainbasespeedometer.d.ts +0 -1
  250. package/dist/node/devices/duplotrainbasespeedometer.js +7 -30
  251. package/dist/node/devices/duplotrainbasespeedometer.js.map +1 -1
  252. package/dist/node/devices/hubled.js +5 -28
  253. package/dist/node/devices/hubled.js.map +1 -1
  254. package/dist/node/devices/index.d.ts +14 -0
  255. package/dist/node/devices/index.js +154 -0
  256. package/dist/node/devices/index.js.map +1 -0
  257. package/dist/node/devices/led.d.ts +140 -0
  258. package/dist/node/devices/led.js +295 -0
  259. package/dist/node/devices/led.js.map +1 -0
  260. package/dist/node/devices/light.js +5 -28
  261. package/dist/node/devices/light.js.map +1 -1
  262. package/dist/node/devices/marioaccelerometer.d.ts +0 -1
  263. package/dist/node/devices/marioaccelerometer.js +7 -30
  264. package/dist/node/devices/marioaccelerometer.js.map +1 -1
  265. package/dist/node/devices/mariobarcodesensor.d.ts +0 -1
  266. package/dist/node/devices/mariobarcodesensor.js +7 -30
  267. package/dist/node/devices/mariobarcodesensor.js.map +1 -1
  268. package/dist/node/devices/mariopantssensor.d.ts +0 -1
  269. package/dist/node/devices/mariopantssensor.js +7 -30
  270. package/dist/node/devices/mariopantssensor.js.map +1 -1
  271. package/dist/node/devices/mediumlinearmotor.js +3 -26
  272. package/dist/node/devices/mediumlinearmotor.js.map +1 -1
  273. package/dist/node/devices/motionsensor.d.ts +0 -1
  274. package/dist/node/devices/motionsensor.js +7 -30
  275. package/dist/node/devices/motionsensor.js.map +1 -1
  276. package/dist/node/devices/motor.d.ts +182 -0
  277. package/dist/node/devices/motor.js +367 -0
  278. package/dist/node/devices/motor.js.map +1 -0
  279. package/dist/node/devices/movehubmediumlinearmotor.js +3 -26
  280. package/dist/node/devices/movehubmediumlinearmotor.js.map +1 -1
  281. package/dist/node/devices/movehubtiltsensor.d.ts +0 -1
  282. package/dist/node/devices/movehubtiltsensor.js +7 -30
  283. package/dist/node/devices/movehubtiltsensor.js.map +1 -1
  284. package/dist/node/devices/piezobuzzer.js +3 -26
  285. package/dist/node/devices/piezobuzzer.js.map +1 -1
  286. package/dist/node/devices/remotecontrolbutton.d.ts +0 -1
  287. package/dist/node/devices/remotecontrolbutton.js +9 -32
  288. package/dist/node/devices/remotecontrolbutton.js.map +1 -1
  289. package/dist/node/devices/sensor.d.ts +305 -0
  290. package/dist/node/devices/sensor.js +662 -0
  291. package/dist/node/devices/sensor.js.map +1 -0
  292. package/dist/node/devices/simplemediumlinearmotor.js +3 -26
  293. package/dist/node/devices/simplemediumlinearmotor.js.map +1 -1
  294. package/dist/node/devices/tachomotor.d.ts +0 -1
  295. package/dist/node/devices/tachomotor.js +14 -37
  296. package/dist/node/devices/tachomotor.js.map +1 -1
  297. package/dist/node/devices/technic3x3colorlightmatrix.js +7 -30
  298. package/dist/node/devices/technic3x3colorlightmatrix.js.map +1 -1
  299. package/dist/node/devices/techniccolorsensor.d.ts +0 -1
  300. package/dist/node/devices/techniccolorsensor.js +9 -32
  301. package/dist/node/devices/techniccolorsensor.js.map +1 -1
  302. package/dist/node/devices/technicdistancesensor.d.ts +0 -1
  303. package/dist/node/devices/technicdistancesensor.js +7 -30
  304. package/dist/node/devices/technicdistancesensor.js.map +1 -1
  305. package/dist/node/devices/technicforcesensor.d.ts +0 -1
  306. package/dist/node/devices/technicforcesensor.js +7 -30
  307. package/dist/node/devices/technicforcesensor.js.map +1 -1
  308. package/dist/node/devices/techniclargeangularmotor.js +3 -26
  309. package/dist/node/devices/techniclargeangularmotor.js.map +1 -1
  310. package/dist/node/devices/techniclargelinearmotor.js +3 -26
  311. package/dist/node/devices/techniclargelinearmotor.js.map +1 -1
  312. package/dist/node/devices/technicmediumangularmotor.js +3 -26
  313. package/dist/node/devices/technicmediumangularmotor.js.map +1 -1
  314. package/dist/node/devices/technicmediumhubaccelerometersensor.d.ts +0 -1
  315. package/dist/node/devices/technicmediumhubaccelerometersensor.js +7 -30
  316. package/dist/node/devices/technicmediumhubaccelerometersensor.js.map +1 -1
  317. package/dist/node/devices/technicmediumhubgyrosensor.d.ts +0 -1
  318. package/dist/node/devices/technicmediumhubgyrosensor.js +7 -30
  319. package/dist/node/devices/technicmediumhubgyrosensor.js.map +1 -1
  320. package/dist/node/devices/technicmediumhubtiltsensor.d.ts +0 -1
  321. package/dist/node/devices/technicmediumhubtiltsensor.js +8 -31
  322. package/dist/node/devices/technicmediumhubtiltsensor.js.map +1 -1
  323. package/dist/node/devices/technicsmallangularmotor.js +3 -26
  324. package/dist/node/devices/technicsmallangularmotor.js.map +1 -1
  325. package/dist/node/devices/technicxlargelinearmotor.js +3 -26
  326. package/dist/node/devices/technicxlargelinearmotor.js.map +1 -1
  327. package/dist/node/devices/tiltsensor.d.ts +0 -1
  328. package/dist/node/devices/tiltsensor.js +7 -30
  329. package/dist/node/devices/tiltsensor.js.map +1 -1
  330. package/dist/node/devices/trainmotor.js +3 -26
  331. package/dist/node/devices/trainmotor.js.map +1 -1
  332. package/dist/node/devices/voltagesensor.d.ts +0 -1
  333. package/dist/node/devices/voltagesensor.js +7 -30
  334. package/dist/node/devices/voltagesensor.js.map +1 -1
  335. package/dist/node/hub.d.ts +291 -0
  336. package/dist/node/hub.js +778 -0
  337. package/dist/node/hub.js.map +1 -0
  338. package/dist/node/hubs/basehub.d.ts +9 -10
  339. package/dist/node/hubs/basehub.js +74 -97
  340. package/dist/node/hubs/basehub.js.map +1 -1
  341. package/dist/node/hubs/duplotrainbase.d.ts +1 -1
  342. package/dist/node/hubs/duplotrainbase.js +6 -29
  343. package/dist/node/hubs/duplotrainbase.js.map +1 -1
  344. package/dist/node/hubs/hub.d.ts +1 -1
  345. package/dist/node/hubs/hub.js +12 -38
  346. package/dist/node/hubs/hub.js.map +1 -1
  347. package/dist/node/hubs/lpf2hub.d.ts +5 -6
  348. package/dist/node/hubs/lpf2hub.js +17 -40
  349. package/dist/node/hubs/lpf2hub.js.map +1 -1
  350. package/dist/node/hubs/mario.d.ts +1 -1
  351. package/dist/node/hubs/mario.js +6 -29
  352. package/dist/node/hubs/mario.js.map +1 -1
  353. package/dist/node/hubs/movehub.d.ts +1 -1
  354. package/dist/node/hubs/movehub.js +8 -34
  355. package/dist/node/hubs/movehub.js.map +1 -1
  356. package/dist/node/hubs/remotecontrol.d.ts +1 -1
  357. package/dist/node/hubs/remotecontrol.js +6 -29
  358. package/dist/node/hubs/remotecontrol.js.map +1 -1
  359. package/dist/node/hubs/technicmediumhub.d.ts +1 -1
  360. package/dist/node/hubs/technicmediumhub.js +6 -29
  361. package/dist/node/hubs/technicmediumhub.js.map +1 -1
  362. package/dist/node/hubs/technicsmallhub.d.ts +1 -1
  363. package/dist/node/hubs/technicsmallhub.js +10 -33
  364. package/dist/node/hubs/technicsmallhub.js.map +1 -1
  365. package/dist/node/hubs/wedo2smarthub.d.ts +3 -4
  366. package/dist/node/hubs/wedo2smarthub.js +15 -38
  367. package/dist/node/hubs/wedo2smarthub.js.map +1 -1
  368. package/dist/node/index-browser.js +91 -112
  369. package/dist/node/index-browser.js.map +1 -1
  370. package/dist/node/index-node.d.ts +1 -0
  371. package/dist/node/index-node.js +49 -115
  372. package/dist/node/index-node.js.map +1 -1
  373. package/dist/node/index.d.ts +31 -0
  374. package/dist/node/index.js +93 -0
  375. package/dist/node/index.js.map +1 -0
  376. package/dist/node/index.mjs +0 -0
  377. package/dist/node/interfaces.d.ts +1 -2
  378. package/dist/node/interfaces.js +1 -2
  379. package/dist/node/nobleabstraction.d.ts +0 -1
  380. package/dist/node/nobleabstraction.js +5 -7
  381. package/dist/node/nobleabstraction.js.map +1 -1
  382. package/dist/node/poweredup-browser.d.ts +0 -2
  383. package/dist/node/poweredup-browser.js +28 -47
  384. package/dist/node/poweredup-browser.js.map +1 -1
  385. package/dist/node/poweredup-node.d.ts +0 -2
  386. package/dist/node/poweredup-node.js +31 -54
  387. package/dist/node/poweredup-node.js.map +1 -1
  388. package/dist/node/poweredup.d.ts +83 -0
  389. package/dist/node/poweredup.js +542 -0
  390. package/dist/node/poweredup.js.map +1 -0
  391. package/dist/node/protocol-wedo.d.ts +158 -0
  392. package/dist/node/protocol-wedo.js +342 -0
  393. package/dist/node/protocol-wedo.js.map +1 -0
  394. package/dist/node/protocol.d.ts +340 -0
  395. package/dist/node/protocol.js +730 -0
  396. package/dist/node/protocol.js.map +1 -0
  397. package/dist/node/types.d.ts +408 -0
  398. package/dist/node/types.js +291 -0
  399. package/dist/node/types.js.map +1 -0
  400. package/dist/node/utils.d.ts +1 -1
  401. package/dist/node/utils.js +14 -26
  402. package/dist/node/utils.js.map +1 -1
  403. package/dist/node/webbleabstraction.d.ts +2 -3
  404. package/dist/node/webbleabstraction.js +4 -8
  405. package/dist/node/webbleabstraction.js.map +1 -1
  406. package/dist/poweredup-browser.d.ts +46 -0
  407. package/dist/poweredup-browser.d.ts.map +1 -0
  408. package/dist/poweredup-browser.js +210 -0
  409. package/dist/poweredup-browser.js.map +1 -0
  410. package/dist/poweredup-node.d.ts +49 -0
  411. package/dist/poweredup-node.d.ts.map +1 -0
  412. package/dist/poweredup-node.js +166 -0
  413. package/dist/poweredup-node.js.map +1 -0
  414. package/dist/tsconfig.tsbuildinfo +1 -0
  415. package/dist/utils.d.ts +13 -0
  416. package/dist/utils.d.ts.map +1 -0
  417. package/dist/utils.js +90 -0
  418. package/dist/utils.js.map +1 -0
  419. package/dist/webbleabstraction.d.ts +27 -0
  420. package/dist/webbleabstraction.d.ts.map +1 -0
  421. package/dist/webbleabstraction.js +104 -0
  422. package/dist/webbleabstraction.js.map +1 -0
  423. package/docs/.nojekyll +1 -0
  424. package/docs/assets/hierarchy.js +1 -0
  425. package/docs/assets/highlight.css +99 -0
  426. package/docs/assets/icons.js +18 -0
  427. package/docs/assets/icons.svg +1 -0
  428. package/docs/assets/main.js +60 -0
  429. package/docs/assets/navigation.js +1 -0
  430. package/docs/assets/search.js +1 -0
  431. package/docs/assets/style.css +1633 -0
  432. package/docs/classes/AbsoluteMotor.html +242 -0
  433. package/docs/classes/BaseHub.html +220 -0
  434. package/docs/classes/BasicMotor.html +201 -0
  435. package/docs/classes/Color.html +3 -0
  436. package/docs/classes/ColorDistanceSensor.html +214 -0
  437. package/docs/classes/CurrentSensor.html +185 -0
  438. package/docs/classes/Device.html +185 -0
  439. package/docs/classes/DuploTrainBase.html +233 -0
  440. package/docs/classes/DuploTrainBaseColorSensor.html +185 -0
  441. package/docs/classes/DuploTrainBaseMotor.html +201 -0
  442. package/docs/classes/DuploTrainBaseSpeaker.html +191 -0
  443. package/docs/classes/DuploTrainBaseSpeedometer.html +185 -0
  444. package/docs/classes/Hub.html +233 -0
  445. package/docs/classes/HubLED.html +191 -0
  446. package/docs/classes/Light.html +195 -0
  447. package/docs/classes/Mario.html +233 -0
  448. package/docs/classes/MediumLinearMotor.html +229 -0
  449. package/docs/classes/MotionSensor.html +185 -0
  450. package/docs/classes/MoveHub.html +233 -0
  451. package/docs/classes/MoveHubMediumLinearMotor.html +229 -0
  452. package/docs/classes/MoveHubTiltSensor.html +185 -0
  453. package/docs/classes/PiezoBuzzer.html +189 -0
  454. package/docs/classes/PoweredUP.html +180 -0
  455. package/docs/classes/RemoteControl.html +233 -0
  456. package/docs/classes/RemoteControlButton.html +185 -0
  457. package/docs/classes/SimpleMediumLinearMotor.html +201 -0
  458. package/docs/classes/TachoMotor.html +229 -0
  459. package/docs/classes/Technic3x3ColorLightMatrix.html +189 -0
  460. package/docs/classes/TechnicColorSensor.html +191 -0
  461. package/docs/classes/TechnicDistanceSensor.html +192 -0
  462. package/docs/classes/TechnicForceSensor.html +185 -0
  463. package/docs/classes/TechnicLargeAngularMotor.html +242 -0
  464. package/docs/classes/TechnicLargeLinearMotor.html +242 -0
  465. package/docs/classes/TechnicMediumAngularMotor.html +242 -0
  466. package/docs/classes/TechnicMediumHub.html +233 -0
  467. package/docs/classes/TechnicMediumHubAccelerometerSensor.html +185 -0
  468. package/docs/classes/TechnicMediumHubGyroSensor.html +185 -0
  469. package/docs/classes/TechnicMediumHubTiltSensor.html +197 -0
  470. package/docs/classes/TechnicSmallAngularMotor.html +242 -0
  471. package/docs/classes/TechnicXLargeLinearMotor.html +242 -0
  472. package/docs/classes/TiltSensor.html +185 -0
  473. package/docs/classes/TrainMotor.html +201 -0
  474. package/docs/classes/VoltageSensor.html +185 -0
  475. package/docs/classes/WeDo2SmartHub.html +229 -0
  476. package/docs/enums/ActionType.html +22 -0
  477. package/docs/enums/AlertOperation.html +10 -0
  478. package/docs/enums/AlertPayload.html +6 -0
  479. package/docs/enums/AlertType.html +10 -0
  480. package/docs/enums/BLECharacteristic.html +15 -0
  481. package/docs/enums/BLEManufacturerData.html +8 -0
  482. package/docs/enums/BLEService.html +7 -0
  483. package/docs/enums/BrakingStyle.html +7 -0
  484. package/docs/enums/ButtonState.html +11 -0
  485. package/docs/enums/Consts.Color.html +25 -0
  486. package/docs/enums/DeviceType.html +79 -0
  487. package/docs/enums/DuploTrainBaseSound.html +11 -0
  488. package/docs/enums/ErrorCode.html +18 -0
  489. package/docs/enums/Event.html +8 -0
  490. package/docs/enums/HWNetWorkCommandType.html +28 -0
  491. package/docs/enums/HWNetworkFamily.html +20 -0
  492. package/docs/enums/HWNetworkSubFamily.html +16 -0
  493. package/docs/enums/HubPropertyOperation.html +14 -0
  494. package/docs/enums/HubPropertyPayload.html +32 -0
  495. package/docs/enums/HubPropertyReference.html +32 -0
  496. package/docs/enums/HubType.html +19 -0
  497. package/docs/enums/IOTypeID.html +30 -0
  498. package/docs/enums/MarioColor.html +17 -0
  499. package/docs/enums/MarioPantsType.html +13 -0
  500. package/docs/enums/MessageType.html +48 -0
  501. package/docs/enums/ModeInformationType.html +22 -0
  502. package/docs/enums/PortInputFormatSetupSubCommand.html +14 -0
  503. package/docs/hierarchy.html +1 -0
  504. package/docs/index.html +18 -167
  505. package/docs/modules/Consts.html +1 -0
  506. package/docs/modules.html +1 -0
  507. package/docs/variables/ColorNames.html +1 -0
  508. package/docs/variables/DeviceTypeNames.html +1 -0
  509. package/docs/variables/HubTypeNames.html +1 -0
  510. package/docs/variables/isWebBluetooth.html +1 -0
  511. package/package.json +19 -25
  512. package/src/color.ts +1 -1
  513. package/src/consts.ts +16 -16
  514. package/src/devices/absolutemotor.ts +4 -7
  515. package/src/devices/basicmotor.ts +4 -8
  516. package/src/devices/colordistancesensor.ts +8 -14
  517. package/src/devices/currentsensor.ts +3 -3
  518. package/src/devices/device.ts +4 -4
  519. package/src/devices/duplotrainbasecolorsensor.ts +4 -4
  520. package/src/devices/duplotrainbasemotor.ts +3 -3
  521. package/src/devices/duplotrainbasespeaker.ts +3 -5
  522. package/src/devices/duplotrainbasespeedometer.ts +3 -3
  523. package/src/devices/hubled.ts +3 -5
  524. package/src/devices/light.ts +4 -6
  525. package/src/devices/marioaccelerometer.ts +3 -3
  526. package/src/devices/mariobarcodesensor.ts +3 -3
  527. package/src/devices/mariopantssensor.ts +3 -3
  528. package/src/devices/mediumlinearmotor.ts +3 -3
  529. package/src/devices/motionsensor.ts +3 -3
  530. package/src/devices/movehubmediumlinearmotor.ts +3 -3
  531. package/src/devices/movehubtiltsensor.ts +3 -3
  532. package/src/devices/piezobuzzer.ts +3 -4
  533. package/src/devices/remotecontrolbutton.ts +4 -4
  534. package/src/devices/simplemediumlinearmotor.ts +3 -3
  535. package/src/devices/tachomotor.ts +5 -11
  536. package/src/devices/technic3x3colorlightmatrix.ts +4 -5
  537. package/src/devices/techniccolorsensor.ts +4 -5
  538. package/src/devices/technicdistancesensor.ts +3 -4
  539. package/src/devices/technicforcesensor.ts +3 -3
  540. package/src/devices/techniclargeangularmotor.ts +3 -3
  541. package/src/devices/techniclargelinearmotor.ts +3 -3
  542. package/src/devices/technicmediumangularmotor.ts +3 -3
  543. package/src/devices/technicmediumhubaccelerometersensor.ts +3 -3
  544. package/src/devices/technicmediumhubgyrosensor.ts +3 -3
  545. package/src/devices/technicmediumhubtiltsensor.ts +7 -10
  546. package/src/devices/technicsmallangularmotor.ts +3 -3
  547. package/src/devices/technicxlargelinearmotor.ts +3 -3
  548. package/src/devices/tiltsensor.ts +3 -3
  549. package/src/devices/trainmotor.ts +3 -3
  550. package/src/devices/voltagesensor.ts +3 -3
  551. package/src/hubs/basehub.ts +42 -51
  552. package/src/hubs/duplotrainbase.ts +5 -5
  553. package/src/hubs/hub.ts +7 -7
  554. package/src/hubs/lpf2hub.ts +4 -7
  555. package/src/hubs/mario.ts +5 -5
  556. package/src/hubs/movehub.ts +7 -7
  557. package/src/hubs/remotecontrol.ts +5 -5
  558. package/src/hubs/technicmediumhub.ts +5 -5
  559. package/src/hubs/technicsmallhub.ts +5 -5
  560. package/src/hubs/wedo2smarthub.ts +7 -9
  561. package/src/index-browser.ts +46 -46
  562. package/src/index-node.ts +47 -46
  563. package/src/interfaces.ts +2 -2
  564. package/src/nobleabstraction.ts +10 -10
  565. package/src/poweredup-browser.ts +20 -21
  566. package/src/poweredup-node.ts +15 -22
  567. package/src/utils.ts +1 -1
  568. package/src/webbleabstraction.ts +5 -5
  569. package/tsconfig.tsbuildinfo +1 -0
  570. package/typedoc.json +14 -0
  571. package/.jsdoc.json +0 -41
  572. package/abandonware-noble.d.ts +0 -129
  573. package/dist/browser/poweredup.js +0 -3
  574. package/dist/browser/poweredup.js.LICENSE.txt +0 -8
  575. package/dist/browser/poweredup.js.map +0 -1
  576. package/docs/AbsoluteMotor.html +0 -2037
  577. package/docs/BaseHub.html +0 -1576
  578. package/docs/BasicMotor.html +0 -1561
  579. package/docs/ColorDistanceSensor.html +0 -3136
  580. package/docs/CurrentSensor.html +0 -1175
  581. package/docs/Device.html +0 -971
  582. package/docs/DuploTrainBase.html +0 -2313
  583. package/docs/DuploTrainBaseColorSensor.html +0 -1671
  584. package/docs/DuploTrainBaseMotor.html +0 -1597
  585. package/docs/DuploTrainBaseSpeaker.html +0 -1321
  586. package/docs/DuploTraniBaseSpeedometer.html +0 -1025
  587. package/docs/Hub.html +0 -7596
  588. package/docs/HubLED.html +0 -1379
  589. package/docs/LPF2Hub.html +0 -2271
  590. package/docs/Light.html +0 -1379
  591. package/docs/Mario.html +0 -2313
  592. package/docs/MarioAccelerometer.html +0 -1379
  593. package/docs/MarioBarcodeSensor.html +0 -1379
  594. package/docs/MarioPantsSensor.html +0 -1175
  595. package/docs/MediumLinearMotor.html +0 -1426
  596. package/docs/MotionSensor.html +0 -1175
  597. package/docs/MoveHub.html +0 -2313
  598. package/docs/MoveHubMediumLinearMotor.html +0 -1426
  599. package/docs/MoveHubTiltSensor.html +0 -1204
  600. package/docs/PiezoBuzzer.html +0 -1204
  601. package/docs/PoweredUP.html +0 -4322
  602. package/docs/RemoteControl.html +0 -2313
  603. package/docs/RemoteControlButton.html +0 -1175
  604. package/docs/SimpleMediumLinearMotor.html +0 -1025
  605. package/docs/TachoMotor.html +0 -2715
  606. package/docs/Technic3x3ColorLightMatrix.html +0 -1181
  607. package/docs/TechnicColorSensor.html +0 -1675
  608. package/docs/TechnicDistanceSensor.html +0 -1558
  609. package/docs/TechnicForceSensor.html +0 -1467
  610. package/docs/TechnicLargeAngularMotor.html +0 -2073
  611. package/docs/TechnicLargeLinearMotor.html +0 -2073
  612. package/docs/TechnicMediumAngularMotor.html +0 -2073
  613. package/docs/TechnicMediumHub.html +0 -2313
  614. package/docs/TechnicMediumHubAccelerometerSensor.html +0 -1233
  615. package/docs/TechnicMediumHubGyroSensor.html +0 -1233
  616. package/docs/TechnicMediumHubTiltSensor.html +0 -1821
  617. package/docs/TechnicSmallAngularMotor.html +0 -2073
  618. package/docs/TechnicXLargeLinearMotor.html +0 -2073
  619. package/docs/TiltSensor.html +0 -1204
  620. package/docs/TrainMotor.html +0 -1597
  621. package/docs/VoltageSensor.html +0 -1175
  622. package/docs/WeDo2SmartHub.html +0 -2099
  623. package/docs/consts.js.html +0 -791
  624. package/docs/devices_absolutemotor.js.html +0 -254
  625. package/docs/devices_basicmotor.js.html +0 -197
  626. package/docs/devices_colordistancesensor.js.html +0 -420
  627. package/docs/devices_currentsensor.js.html +0 -191
  628. package/docs/devices_device.js.html +0 -298
  629. package/docs/devices_duplotrainbasecolorsensor.js.html +0 -213
  630. package/docs/devices_duplotrainbasemotor.js.html +0 -148
  631. package/docs/devices_duplotrainbasespeaker.js.html +0 -176
  632. package/docs/devices_duplotrainbasespeedometer.js.html +0 -170
  633. package/docs/devices_hubled.js.html +0 -196
  634. package/docs/devices_light.js.html +0 -182
  635. package/docs/devices_marioaccelerometer.js.html +0 -186
  636. package/docs/devices_mariobarcodesensor.js.html +0 -194
  637. package/docs/devices_mariopantssensor.js.html +0 -170
  638. package/docs/devices_mediumlinearmotor.js.html +0 -148
  639. package/docs/devices_motionsensor.js.html +0 -174
  640. package/docs/devices_movehubmediumlinearmotor.js.html +0 -148
  641. package/docs/devices_movehubtiltsensor.js.html +0 -172
  642. package/docs/devices_piezobuzzer.js.html +0 -164
  643. package/docs/devices_remotecontrolbutton.js.html +0 -176
  644. package/docs/devices_simplemediumlinearmotor.js.html +0 -148
  645. package/docs/devices_tachomotor.js.html +0 -303
  646. package/docs/devices_technic3x3colorlightmatrix.js.html +0 -190
  647. package/docs/devices_techniccolorsensor.js.html +0 -208
  648. package/docs/devices_technicdistancesensor.js.html +0 -194
  649. package/docs/devices_technicforcesensor.js.html +0 -194
  650. package/docs/devices_techniclargeangularmotor.js.html +0 -148
  651. package/docs/devices_techniclargelinearmotor.js.html +0 -148
  652. package/docs/devices_technicmediumangularmotor.js.html +0 -148
  653. package/docs/devices_technicmediumhubaccelerometersensor.js.html +0 -174
  654. package/docs/devices_technicmediumhubgyrosensor.js.html +0 -174
  655. package/docs/devices_technicmediumhubtiltsensor.js.html +0 -242
  656. package/docs/devices_technicsmallangularmotor.js.html +0 -148
  657. package/docs/devices_technicxlargelinearmotor.js.html +0 -148
  658. package/docs/devices_tiltsensor.js.html +0 -172
  659. package/docs/devices_trainmotor.js.html +0 -148
  660. package/docs/devices_voltagesensor.js.html +0 -195
  661. package/docs/fonts/OpenSans-Bold-webfont.eot +0 -0
  662. package/docs/fonts/OpenSans-Bold-webfont.svg +0 -1830
  663. package/docs/fonts/OpenSans-Bold-webfont.woff +0 -0
  664. package/docs/fonts/OpenSans-BoldItalic-webfont.eot +0 -0
  665. package/docs/fonts/OpenSans-BoldItalic-webfont.svg +0 -1830
  666. package/docs/fonts/OpenSans-BoldItalic-webfont.woff +0 -0
  667. package/docs/fonts/OpenSans-Italic-webfont.eot +0 -0
  668. package/docs/fonts/OpenSans-Italic-webfont.svg +0 -1830
  669. package/docs/fonts/OpenSans-Italic-webfont.woff +0 -0
  670. package/docs/fonts/OpenSans-Light-webfont.eot +0 -0
  671. package/docs/fonts/OpenSans-Light-webfont.svg +0 -1831
  672. package/docs/fonts/OpenSans-Light-webfont.woff +0 -0
  673. package/docs/fonts/OpenSans-LightItalic-webfont.eot +0 -0
  674. package/docs/fonts/OpenSans-LightItalic-webfont.svg +0 -1835
  675. package/docs/fonts/OpenSans-LightItalic-webfont.woff +0 -0
  676. package/docs/fonts/OpenSans-Regular-webfont.eot +0 -0
  677. package/docs/fonts/OpenSans-Regular-webfont.svg +0 -1831
  678. package/docs/fonts/OpenSans-Regular-webfont.woff +0 -0
  679. package/docs/fonts/OpenSans-Semibold-webfont.eot +0 -0
  680. package/docs/fonts/OpenSans-Semibold-webfont.svg +0 -1830
  681. package/docs/fonts/OpenSans-Semibold-webfont.ttf +0 -0
  682. package/docs/fonts/OpenSans-Semibold-webfont.woff +0 -0
  683. package/docs/fonts/OpenSans-SemiboldItalic-webfont.eot +0 -0
  684. package/docs/fonts/OpenSans-SemiboldItalic-webfont.svg +0 -1830
  685. package/docs/fonts/OpenSans-SemiboldItalic-webfont.ttf +0 -0
  686. package/docs/fonts/OpenSans-SemiboldItalic-webfont.woff +0 -0
  687. package/docs/global.html +0 -9829
  688. package/docs/hubs_basehub.js.html +0 -528
  689. package/docs/hubs_duplotrainbase.js.html +0 -171
  690. package/docs/hubs_hub.js.html +0 -183
  691. package/docs/hubs_lpf2hub.js.html +0 -450
  692. package/docs/hubs_mario.js.html +0 -167
  693. package/docs/hubs_movehub.js.html +0 -185
  694. package/docs/hubs_remotecontrol.js.html +0 -173
  695. package/docs/hubs_technicmediumhub.js.html +0 -178
  696. package/docs/hubs_technicsmallhub.js.html +0 -177
  697. package/docs/hubs_wedo2smarthub.js.html +0 -324
  698. package/docs/icons/home.svg +0 -4
  699. package/docs/icons/search.svg +0 -4
  700. package/docs/poweredup-browser.js.html +0 -348
  701. package/docs/poweredup-node.js.html +0 -309
  702. package/docs/scripts/linenumber.js +0 -23
  703. package/docs/scripts/pagelocation.js +0 -89
  704. package/docs/styles/collapse.css +0 -27
  705. package/docs/styles/jsdoc-default.css +0 -953
  706. package/docs/styles/prettify-jsdoc.css +0 -111
  707. package/docs/styles/prettify-tomorrow.css +0 -138
  708. package/jsdoc-template/braintree/CHANGELOG.md +0 -31
  709. package/jsdoc-template/braintree/LICENSE +0 -27
  710. package/jsdoc-template/braintree/README.md +0 -90
  711. package/jsdoc-template/braintree/package.json +0 -39
  712. package/jsdoc-template/braintree/publish.js +0 -675
  713. package/jsdoc-template/braintree/static/fonts/OpenSans-Bold-webfont.eot +0 -0
  714. package/jsdoc-template/braintree/static/fonts/OpenSans-Bold-webfont.svg +0 -1830
  715. package/jsdoc-template/braintree/static/fonts/OpenSans-Bold-webfont.woff +0 -0
  716. package/jsdoc-template/braintree/static/fonts/OpenSans-BoldItalic-webfont.eot +0 -0
  717. package/jsdoc-template/braintree/static/fonts/OpenSans-BoldItalic-webfont.svg +0 -1830
  718. package/jsdoc-template/braintree/static/fonts/OpenSans-BoldItalic-webfont.woff +0 -0
  719. package/jsdoc-template/braintree/static/fonts/OpenSans-Italic-webfont.eot +0 -0
  720. package/jsdoc-template/braintree/static/fonts/OpenSans-Italic-webfont.svg +0 -1830
  721. package/jsdoc-template/braintree/static/fonts/OpenSans-Italic-webfont.woff +0 -0
  722. package/jsdoc-template/braintree/static/fonts/OpenSans-Light-webfont.eot +0 -0
  723. package/jsdoc-template/braintree/static/fonts/OpenSans-Light-webfont.svg +0 -1831
  724. package/jsdoc-template/braintree/static/fonts/OpenSans-Light-webfont.woff +0 -0
  725. package/jsdoc-template/braintree/static/fonts/OpenSans-LightItalic-webfont.eot +0 -0
  726. package/jsdoc-template/braintree/static/fonts/OpenSans-LightItalic-webfont.svg +0 -1835
  727. package/jsdoc-template/braintree/static/fonts/OpenSans-LightItalic-webfont.woff +0 -0
  728. package/jsdoc-template/braintree/static/fonts/OpenSans-Regular-webfont.eot +0 -0
  729. package/jsdoc-template/braintree/static/fonts/OpenSans-Regular-webfont.svg +0 -1831
  730. package/jsdoc-template/braintree/static/fonts/OpenSans-Regular-webfont.woff +0 -0
  731. package/jsdoc-template/braintree/static/fonts/OpenSans-Semibold-webfont.eot +0 -0
  732. package/jsdoc-template/braintree/static/fonts/OpenSans-Semibold-webfont.svg +0 -1830
  733. package/jsdoc-template/braintree/static/fonts/OpenSans-Semibold-webfont.ttf +0 -0
  734. package/jsdoc-template/braintree/static/fonts/OpenSans-Semibold-webfont.woff +0 -0
  735. package/jsdoc-template/braintree/static/fonts/OpenSans-SemiboldItalic-webfont.eot +0 -0
  736. package/jsdoc-template/braintree/static/fonts/OpenSans-SemiboldItalic-webfont.svg +0 -1830
  737. package/jsdoc-template/braintree/static/fonts/OpenSans-SemiboldItalic-webfont.ttf +0 -0
  738. package/jsdoc-template/braintree/static/fonts/OpenSans-SemiboldItalic-webfont.woff +0 -0
  739. package/jsdoc-template/braintree/static/icons/home.svg +0 -4
  740. package/jsdoc-template/braintree/static/icons/search.svg +0 -4
  741. package/jsdoc-template/braintree/static/scripts/linenumber.js +0 -23
  742. package/jsdoc-template/braintree/static/scripts/pagelocation.js +0 -89
  743. package/jsdoc-template/braintree/static/styles/collapse.css +0 -27
  744. package/jsdoc-template/braintree/static/styles/jsdoc-default.css +0 -953
  745. package/jsdoc-template/braintree/static/styles/prettify-jsdoc.css +0 -111
  746. package/jsdoc-template/braintree/static/styles/prettify-tomorrow.css +0 -138
  747. package/jsdoc-template/braintree/tmpl/augments.tmpl +0 -10
  748. package/jsdoc-template/braintree/tmpl/container.tmpl +0 -213
  749. package/jsdoc-template/braintree/tmpl/details.tmpl +0 -223
  750. package/jsdoc-template/braintree/tmpl/example.tmpl +0 -2
  751. package/jsdoc-template/braintree/tmpl/examples.tmpl +0 -14
  752. package/jsdoc-template/braintree/tmpl/exceptions.tmpl +0 -28
  753. package/jsdoc-template/braintree/tmpl/layout.tmpl +0 -150
  754. package/jsdoc-template/braintree/tmpl/mainpage.tmpl +0 -9
  755. package/jsdoc-template/braintree/tmpl/members.tmpl +0 -38
  756. package/jsdoc-template/braintree/tmpl/method.tmpl +0 -128
  757. package/jsdoc-template/braintree/tmpl/params.tmpl +0 -125
  758. package/jsdoc-template/braintree/tmpl/properties.tmpl +0 -111
  759. package/jsdoc-template/braintree/tmpl/returns.tmpl +0 -17
  760. package/jsdoc-template/braintree/tmpl/source.tmpl +0 -9
  761. package/jsdoc-template/braintree/tmpl/tutorial.tmpl +0 -23
  762. package/jsdoc-template/braintree/tmpl/type.tmpl +0 -11
  763. 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