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,730 @@
1
+ "use strict";
2
+ /**
3
+ * PoweredUp Protocol
4
+ * LEGO Wireless Protocol 3.0 (LWP3) message encoding/decoding
5
+ * https://lego.github.io/lego-ble-wireless-protocol-docs/
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.ErrorCode = exports.ModeInformationType = exports.PortInformationType = exports.MotorSubCommand = exports.AlertOperation = exports.HubAction = exports.HubPropertyOperation = exports.HubProperty = exports.MessageType = exports.BLE_BOOTLOADER_CHARACTERISTIC_UUID = exports.BLE_BOOTLOADER_SERVICE_UUID = exports.BLE_CHARACTERISTIC_UUID = exports.BLE_SERVICE_UUID = void 0;
9
+ exports.decodeMessageLength = decodeMessageLength;
10
+ exports.encodeMessageLength = encodeMessageLength;
11
+ exports.decodeVersion = decodeVersion;
12
+ exports.decodeMACAddress = decodeMACAddress;
13
+ exports.decodeMessage = decodeMessage;
14
+ exports.encodeMessage = encodeMessage;
15
+ exports.createHubPropertyRequest = createHubPropertyRequest;
16
+ exports.createHubPropertySet = createHubPropertySet;
17
+ exports.createHubAction = createHubAction;
18
+ exports.createAlertSubscription = createAlertSubscription;
19
+ exports.createPortInformationRequest = createPortInformationRequest;
20
+ exports.createPortModeInformationRequest = createPortModeInformationRequest;
21
+ exports.createPortInputFormatSetup = createPortInputFormatSetup;
22
+ exports.createVirtualPortSetup = createVirtualPortSetup;
23
+ exports.createStartPower = createStartPower;
24
+ exports.createStartPowerDual = createStartPowerDual;
25
+ exports.createStartSpeed = createStartSpeed;
26
+ exports.createStartSpeedDual = createStartSpeedDual;
27
+ exports.createStartSpeedForTime = createStartSpeedForTime;
28
+ exports.createStartSpeedForDegrees = createStartSpeedForDegrees;
29
+ exports.createGotoAbsolutePosition = createGotoAbsolutePosition;
30
+ exports.createPresetEncoder = createPresetEncoder;
31
+ exports.createSetAccTime = createSetAccTime;
32
+ exports.createSetDecTime = createSetDecTime;
33
+ exports.createSetLEDColor = createSetLEDColor;
34
+ exports.createSetLEDRGB = createSetLEDRGB;
35
+ exports.parseMotorFeedback = parseMotorFeedback;
36
+ exports.parseHubPropertyValue = parseHubPropertyValue;
37
+ const types_1 = require("./types");
38
+ // ============================================================================
39
+ // BLE Service and Characteristic UUIDs
40
+ // ============================================================================
41
+ exports.BLE_SERVICE_UUID = "00001623-1212-efde-1623-785feabcd123";
42
+ exports.BLE_CHARACTERISTIC_UUID = "00001624-1212-efde-1623-785feabcd123";
43
+ exports.BLE_BOOTLOADER_SERVICE_UUID = "00001625-1212-efde-1623-785feabcd123";
44
+ exports.BLE_BOOTLOADER_CHARACTERISTIC_UUID = "00001626-1212-efde-1623-785feabcd123";
45
+ // ============================================================================
46
+ // Message Types
47
+ // https://lego.github.io/lego-ble-wireless-protocol-docs/index.html#message-types
48
+ // ============================================================================
49
+ var MessageType;
50
+ (function (MessageType) {
51
+ MessageType[MessageType["HUB_PROPERTIES"] = 1] = "HUB_PROPERTIES";
52
+ MessageType[MessageType["HUB_ACTIONS"] = 2] = "HUB_ACTIONS";
53
+ MessageType[MessageType["HUB_ALERTS"] = 3] = "HUB_ALERTS";
54
+ MessageType[MessageType["HUB_ATTACHED_IO"] = 4] = "HUB_ATTACHED_IO";
55
+ MessageType[MessageType["GENERIC_ERROR_MESSAGES"] = 5] = "GENERIC_ERROR_MESSAGES";
56
+ MessageType[MessageType["HW_NETWORK_COMMANDS"] = 8] = "HW_NETWORK_COMMANDS";
57
+ MessageType[MessageType["FW_UPDATE_GO_INTO_BOOT_MODE"] = 16] = "FW_UPDATE_GO_INTO_BOOT_MODE";
58
+ MessageType[MessageType["FW_UPDATE_LOCK_MEMORY"] = 17] = "FW_UPDATE_LOCK_MEMORY";
59
+ MessageType[MessageType["FW_UPDATE_LOCK_STATUS_REQUEST"] = 18] = "FW_UPDATE_LOCK_STATUS_REQUEST";
60
+ MessageType[MessageType["FW_LOCK_STATUS"] = 19] = "FW_LOCK_STATUS";
61
+ MessageType[MessageType["PORT_INFORMATION_REQUEST"] = 33] = "PORT_INFORMATION_REQUEST";
62
+ MessageType[MessageType["PORT_MODE_INFORMATION_REQUEST"] = 34] = "PORT_MODE_INFORMATION_REQUEST";
63
+ MessageType[MessageType["PORT_INPUT_FORMAT_SETUP_SINGLE"] = 65] = "PORT_INPUT_FORMAT_SETUP_SINGLE";
64
+ MessageType[MessageType["PORT_INPUT_FORMAT_SETUP_COMBINEDMODE"] = 66] = "PORT_INPUT_FORMAT_SETUP_COMBINEDMODE";
65
+ MessageType[MessageType["PORT_INFORMATION"] = 67] = "PORT_INFORMATION";
66
+ MessageType[MessageType["PORT_MODE_INFORMATION"] = 68] = "PORT_MODE_INFORMATION";
67
+ MessageType[MessageType["PORT_VALUE_SINGLE"] = 69] = "PORT_VALUE_SINGLE";
68
+ MessageType[MessageType["PORT_VALUE_COMBINEDMODE"] = 70] = "PORT_VALUE_COMBINEDMODE";
69
+ MessageType[MessageType["PORT_INPUT_FORMAT_SINGLE"] = 71] = "PORT_INPUT_FORMAT_SINGLE";
70
+ MessageType[MessageType["PORT_INPUT_FORMAT_COMBINEDMODE"] = 72] = "PORT_INPUT_FORMAT_COMBINEDMODE";
71
+ MessageType[MessageType["VIRTUAL_PORT_SETUP"] = 97] = "VIRTUAL_PORT_SETUP";
72
+ MessageType[MessageType["PORT_OUTPUT_COMMAND"] = 129] = "PORT_OUTPUT_COMMAND";
73
+ MessageType[MessageType["PORT_OUTPUT_COMMAND_FEEDBACK"] = 130] = "PORT_OUTPUT_COMMAND_FEEDBACK";
74
+ })(MessageType || (exports.MessageType = MessageType = {}));
75
+ // ============================================================================
76
+ // Hub Property References
77
+ // ============================================================================
78
+ var HubProperty;
79
+ (function (HubProperty) {
80
+ HubProperty[HubProperty["ADVERTISING_NAME"] = 1] = "ADVERTISING_NAME";
81
+ HubProperty[HubProperty["BUTTON"] = 2] = "BUTTON";
82
+ HubProperty[HubProperty["FW_VERSION"] = 3] = "FW_VERSION";
83
+ HubProperty[HubProperty["HW_VERSION"] = 4] = "HW_VERSION";
84
+ HubProperty[HubProperty["RSSI"] = 5] = "RSSI";
85
+ HubProperty[HubProperty["BATTERY_VOLTAGE"] = 6] = "BATTERY_VOLTAGE";
86
+ HubProperty[HubProperty["BATTERY_TYPE"] = 7] = "BATTERY_TYPE";
87
+ HubProperty[HubProperty["MANUFACTURER_NAME"] = 8] = "MANUFACTURER_NAME";
88
+ HubProperty[HubProperty["RADIO_FIRMWARE_VERSION"] = 9] = "RADIO_FIRMWARE_VERSION";
89
+ HubProperty[HubProperty["LWP_PROTOCOL_VERSION"] = 10] = "LWP_PROTOCOL_VERSION";
90
+ HubProperty[HubProperty["SYSTEM_TYPE_ID"] = 11] = "SYSTEM_TYPE_ID";
91
+ HubProperty[HubProperty["HW_NETWORK_ID"] = 12] = "HW_NETWORK_ID";
92
+ HubProperty[HubProperty["PRIMARY_MAC_ADDRESS"] = 13] = "PRIMARY_MAC_ADDRESS";
93
+ HubProperty[HubProperty["SECONDARY_MAC_ADDRESS"] = 14] = "SECONDARY_MAC_ADDRESS";
94
+ HubProperty[HubProperty["HW_NETWORK_FAMILY"] = 15] = "HW_NETWORK_FAMILY";
95
+ })(HubProperty || (exports.HubProperty = HubProperty = {}));
96
+ var HubPropertyOperation;
97
+ (function (HubPropertyOperation) {
98
+ HubPropertyOperation[HubPropertyOperation["SET"] = 1] = "SET";
99
+ HubPropertyOperation[HubPropertyOperation["ENABLE_UPDATES"] = 2] = "ENABLE_UPDATES";
100
+ HubPropertyOperation[HubPropertyOperation["DISABLE_UPDATES"] = 3] = "DISABLE_UPDATES";
101
+ HubPropertyOperation[HubPropertyOperation["RESET"] = 4] = "RESET";
102
+ HubPropertyOperation[HubPropertyOperation["REQUEST_UPDATE"] = 5] = "REQUEST_UPDATE";
103
+ HubPropertyOperation[HubPropertyOperation["UPDATE"] = 6] = "UPDATE";
104
+ })(HubPropertyOperation || (exports.HubPropertyOperation = HubPropertyOperation = {}));
105
+ // ============================================================================
106
+ // Hub Actions
107
+ // ============================================================================
108
+ var HubAction;
109
+ (function (HubAction) {
110
+ HubAction[HubAction["SWITCH_OFF_HUB"] = 1] = "SWITCH_OFF_HUB";
111
+ HubAction[HubAction["DISCONNECT"] = 2] = "DISCONNECT";
112
+ HubAction[HubAction["VCC_PORT_CONTROL_ON"] = 3] = "VCC_PORT_CONTROL_ON";
113
+ HubAction[HubAction["VCC_PORT_CONTROL_OFF"] = 4] = "VCC_PORT_CONTROL_OFF";
114
+ HubAction[HubAction["ACTIVATE_BUSY_INDICATION"] = 5] = "ACTIVATE_BUSY_INDICATION";
115
+ HubAction[HubAction["RESET_BUSY_INDICATION"] = 6] = "RESET_BUSY_INDICATION";
116
+ HubAction[HubAction["SHUTDOWN"] = 47] = "SHUTDOWN";
117
+ HubAction[HubAction["HUB_WILL_SWITCH_OFF"] = 48] = "HUB_WILL_SWITCH_OFF";
118
+ HubAction[HubAction["HUB_WILL_DISCONNECT"] = 49] = "HUB_WILL_DISCONNECT";
119
+ HubAction[HubAction["HUB_WILL_GO_INTO_BOOT_MODE"] = 50] = "HUB_WILL_GO_INTO_BOOT_MODE";
120
+ })(HubAction || (exports.HubAction = HubAction = {}));
121
+ // ============================================================================
122
+ // Alert Operations
123
+ // ============================================================================
124
+ var AlertOperation;
125
+ (function (AlertOperation) {
126
+ AlertOperation[AlertOperation["ENABLE_UPDATE"] = 1] = "ENABLE_UPDATE";
127
+ AlertOperation[AlertOperation["DISABLE_UPDATE"] = 2] = "DISABLE_UPDATE";
128
+ AlertOperation[AlertOperation["REQUEST_UPDATE"] = 3] = "REQUEST_UPDATE";
129
+ AlertOperation[AlertOperation["UPDATE"] = 4] = "UPDATE";
130
+ })(AlertOperation || (exports.AlertOperation = AlertOperation = {}));
131
+ // ============================================================================
132
+ // Port Output Sub-Commands
133
+ // ============================================================================
134
+ var MotorSubCommand;
135
+ (function (MotorSubCommand) {
136
+ MotorSubCommand[MotorSubCommand["START_POWER"] = 1] = "START_POWER";
137
+ MotorSubCommand[MotorSubCommand["START_POWER_DUAL"] = 2] = "START_POWER_DUAL";
138
+ MotorSubCommand[MotorSubCommand["SET_ACC_TIME"] = 5] = "SET_ACC_TIME";
139
+ MotorSubCommand[MotorSubCommand["SET_DEC_TIME"] = 6] = "SET_DEC_TIME";
140
+ MotorSubCommand[MotorSubCommand["START_SPEED"] = 7] = "START_SPEED";
141
+ MotorSubCommand[MotorSubCommand["START_SPEED_DUAL"] = 8] = "START_SPEED_DUAL";
142
+ MotorSubCommand[MotorSubCommand["START_SPEED_FOR_TIME"] = 9] = "START_SPEED_FOR_TIME";
143
+ MotorSubCommand[MotorSubCommand["START_SPEED_FOR_TIME_DUAL"] = 10] = "START_SPEED_FOR_TIME_DUAL";
144
+ MotorSubCommand[MotorSubCommand["START_SPEED_FOR_DEGREES"] = 11] = "START_SPEED_FOR_DEGREES";
145
+ MotorSubCommand[MotorSubCommand["START_SPEED_FOR_DEGREES_DUAL"] = 12] = "START_SPEED_FOR_DEGREES_DUAL";
146
+ MotorSubCommand[MotorSubCommand["GOTO_ABSOLUTE_POSITION"] = 13] = "GOTO_ABSOLUTE_POSITION";
147
+ MotorSubCommand[MotorSubCommand["GOTO_ABSOLUTE_POSITION_DUAL"] = 14] = "GOTO_ABSOLUTE_POSITION_DUAL";
148
+ MotorSubCommand[MotorSubCommand["PRESET_ENCODER"] = 19] = "PRESET_ENCODER";
149
+ MotorSubCommand[MotorSubCommand["PRESET_ENCODER_DUAL"] = 20] = "PRESET_ENCODER_DUAL";
150
+ MotorSubCommand[MotorSubCommand["WRITE_DIRECT"] = 80] = "WRITE_DIRECT";
151
+ MotorSubCommand[MotorSubCommand["WRITE_DIRECT_MODE_DATA"] = 81] = "WRITE_DIRECT_MODE_DATA";
152
+ })(MotorSubCommand || (exports.MotorSubCommand = MotorSubCommand = {}));
153
+ // ============================================================================
154
+ // Port Information Types
155
+ // ============================================================================
156
+ var PortInformationType;
157
+ (function (PortInformationType) {
158
+ PortInformationType[PortInformationType["PORT_VALUE"] = 0] = "PORT_VALUE";
159
+ PortInformationType[PortInformationType["MODE_INFO"] = 1] = "MODE_INFO";
160
+ PortInformationType[PortInformationType["POSSIBLE_MODE_COMBINATIONS"] = 2] = "POSSIBLE_MODE_COMBINATIONS";
161
+ })(PortInformationType || (exports.PortInformationType = PortInformationType = {}));
162
+ var ModeInformationType;
163
+ (function (ModeInformationType) {
164
+ ModeInformationType[ModeInformationType["NAME"] = 0] = "NAME";
165
+ ModeInformationType[ModeInformationType["RAW"] = 1] = "RAW";
166
+ ModeInformationType[ModeInformationType["PCT"] = 2] = "PCT";
167
+ ModeInformationType[ModeInformationType["SI"] = 3] = "SI";
168
+ ModeInformationType[ModeInformationType["SYMBOL"] = 4] = "SYMBOL";
169
+ ModeInformationType[ModeInformationType["MAPPING"] = 5] = "MAPPING";
170
+ ModeInformationType[ModeInformationType["MOTOR_BIAS"] = 7] = "MOTOR_BIAS";
171
+ ModeInformationType[ModeInformationType["CAPABILITY_BITS"] = 8] = "CAPABILITY_BITS";
172
+ ModeInformationType[ModeInformationType["VALUE_FORMAT"] = 128] = "VALUE_FORMAT";
173
+ })(ModeInformationType || (exports.ModeInformationType = ModeInformationType = {}));
174
+ // ============================================================================
175
+ // Error Codes
176
+ // ============================================================================
177
+ var ErrorCode;
178
+ (function (ErrorCode) {
179
+ ErrorCode[ErrorCode["ACK"] = 1] = "ACK";
180
+ ErrorCode[ErrorCode["MACK"] = 2] = "MACK";
181
+ ErrorCode[ErrorCode["BUFFER_OVERFLOW"] = 3] = "BUFFER_OVERFLOW";
182
+ ErrorCode[ErrorCode["TIMEOUT"] = 4] = "TIMEOUT";
183
+ ErrorCode[ErrorCode["COMMAND_NOT_RECOGNIZED"] = 5] = "COMMAND_NOT_RECOGNIZED";
184
+ ErrorCode[ErrorCode["INVALID_USE"] = 6] = "INVALID_USE";
185
+ ErrorCode[ErrorCode["OVERCURRENT"] = 7] = "OVERCURRENT";
186
+ ErrorCode[ErrorCode["INTERNAL_ERROR"] = 8] = "INTERNAL_ERROR";
187
+ })(ErrorCode || (exports.ErrorCode = ErrorCode = {}));
188
+ // ============================================================================
189
+ // Message Decoding
190
+ // ============================================================================
191
+ /**
192
+ * Decode the message length from raw bytes
193
+ * Messages longer than 127 bytes use two-byte length encoding
194
+ */
195
+ function decodeMessageLength(data) {
196
+ if (data.length === 0) {
197
+ return { length: 0, headerSize: 0 };
198
+ }
199
+ const firstByte = data[0];
200
+ if ((firstByte & 0x80) === 0) {
201
+ // Single byte length
202
+ return { length: firstByte, headerSize: 1 };
203
+ }
204
+ else {
205
+ // Two byte length
206
+ if (data.length < 2) {
207
+ return { length: 0, headerSize: 0 };
208
+ }
209
+ const length = (firstByte & 0x7f) | (data[1] << 7);
210
+ return { length, headerSize: 2 };
211
+ }
212
+ }
213
+ /**
214
+ * Encode message length as header bytes
215
+ */
216
+ function encodeMessageLength(length) {
217
+ if (length < 128) {
218
+ return Buffer.from([length]);
219
+ }
220
+ else {
221
+ return Buffer.from([(length & 0x7f) | 0x80, (length >> 7) & 0xff]);
222
+ }
223
+ }
224
+ /**
225
+ * Decode a version number from 4 bytes (BCD encoded)
226
+ */
227
+ function decodeVersion(data, offset = 0) {
228
+ if (data.length < offset + 4) {
229
+ return "0.0.00.0000";
230
+ }
231
+ const byte3 = data[offset + 3];
232
+ const byte2 = data[offset + 2];
233
+ const byte1 = data[offset + 1];
234
+ const byte0 = data[offset];
235
+ const major = (byte3 >> 4) & 0x07;
236
+ const minor = byte3 & 0x0f;
237
+ const bugfix = ((byte2 >> 4) * 10) + (byte2 & 0x0f);
238
+ const build = ((byte1 >> 4) * 1000) + ((byte1 & 0x0f) * 100) + ((byte0 >> 4) * 10) + (byte0 & 0x0f);
239
+ return `${major}.${minor}.${bugfix.toString().padStart(2, "0")}.${build.toString().padStart(4, "0")}`;
240
+ }
241
+ /**
242
+ * Decode a MAC address from 6 bytes
243
+ */
244
+ function decodeMACAddress(data, offset = 0) {
245
+ if (data.length < offset + 6) {
246
+ return "00:00:00:00:00:00";
247
+ }
248
+ const bytes = [];
249
+ for (let i = 0; i < 6; i++) {
250
+ bytes.push(data[offset + i].toString(16).padStart(2, "0").toUpperCase());
251
+ }
252
+ return bytes.join(":");
253
+ }
254
+ /**
255
+ * Decode a complete LWP3 message
256
+ */
257
+ function decodeMessage(data) {
258
+ const { length, headerSize } = decodeMessageLength(data);
259
+ if (length === 0 || data.length < length) {
260
+ return null;
261
+ }
262
+ // Hub ID is at headerSize (always 0x00 for now), message type is at headerSize + 1
263
+ const messageType = data[headerSize + 1];
264
+ switch (messageType) {
265
+ case MessageType.HUB_PROPERTIES:
266
+ return decodeHubPropertyMessage(data, headerSize);
267
+ case MessageType.HUB_ACTIONS:
268
+ return decodeHubActionMessage(data, headerSize);
269
+ case MessageType.HUB_ALERTS:
270
+ return decodeHubAlertMessage(data, headerSize);
271
+ case MessageType.HUB_ATTACHED_IO:
272
+ return decodeAttachedIOMessage(data, headerSize);
273
+ case MessageType.GENERIC_ERROR_MESSAGES:
274
+ return decodeGenericErrorMessage(data, headerSize);
275
+ case MessageType.PORT_INFORMATION:
276
+ return decodePortInformationMessage(data, headerSize);
277
+ case MessageType.PORT_MODE_INFORMATION:
278
+ return decodePortModeInformationMessage(data, headerSize);
279
+ case MessageType.PORT_VALUE_SINGLE:
280
+ return decodePortValueSingleMessage(data, headerSize);
281
+ case MessageType.PORT_VALUE_COMBINEDMODE:
282
+ return decodePortValueCombinedMessage(data, headerSize);
283
+ case MessageType.PORT_INPUT_FORMAT_SINGLE:
284
+ return decodePortInputFormatSingleMessage(data, headerSize);
285
+ case MessageType.PORT_INPUT_FORMAT_COMBINEDMODE:
286
+ return decodePortInputFormatCombinedMessage(data, headerSize);
287
+ case MessageType.PORT_OUTPUT_COMMAND_FEEDBACK:
288
+ return decodePortOutputFeedbackMessage(data, headerSize);
289
+ default:
290
+ return null;
291
+ }
292
+ }
293
+ function decodeHubPropertyMessage(data, headerSize) {
294
+ return {
295
+ type: MessageType.HUB_PROPERTIES,
296
+ property: data[headerSize + 2],
297
+ operation: data[headerSize + 3],
298
+ payload: data.subarray(headerSize + 4),
299
+ };
300
+ }
301
+ function decodeHubActionMessage(data, headerSize) {
302
+ return {
303
+ type: MessageType.HUB_ACTIONS,
304
+ action: data[headerSize + 2],
305
+ };
306
+ }
307
+ function decodeHubAlertMessage(data, headerSize) {
308
+ return {
309
+ type: MessageType.HUB_ALERTS,
310
+ alertType: data[headerSize + 2],
311
+ operation: data[headerSize + 3],
312
+ payload: data.length > headerSize + 4 ? data[headerSize + 4] : 0,
313
+ };
314
+ }
315
+ function decodeAttachedIOMessage(data, headerSize) {
316
+ const portId = data[headerSize + 2];
317
+ const event = data[headerSize + 3];
318
+ const message = {
319
+ type: MessageType.HUB_ATTACHED_IO,
320
+ portId,
321
+ event,
322
+ deviceType: types_1.DeviceType.UNKNOWN,
323
+ };
324
+ if (event === types_1.PortEvent.ATTACHED) {
325
+ message.deviceType = data.readUInt16LE(headerSize + 4);
326
+ if (data.length >= headerSize + 12) {
327
+ message.hardwareRevision = decodeVersion(data, headerSize + 6);
328
+ message.softwareRevision = decodeVersion(data, headerSize + 10);
329
+ }
330
+ }
331
+ else if (event === types_1.PortEvent.ATTACHED_VIRTUAL) {
332
+ message.deviceType = data.readUInt16LE(headerSize + 4);
333
+ message.portIdA = data[headerSize + 6];
334
+ message.portIdB = data[headerSize + 7];
335
+ }
336
+ return message;
337
+ }
338
+ function decodeGenericErrorMessage(data, headerSize) {
339
+ return {
340
+ type: MessageType.GENERIC_ERROR_MESSAGES,
341
+ commandType: data[headerSize + 2],
342
+ errorCode: data[headerSize + 3],
343
+ };
344
+ }
345
+ function decodePortInformationMessage(data, headerSize) {
346
+ const portId = data[headerSize + 2];
347
+ const informationType = data[headerSize + 3];
348
+ const message = {
349
+ type: MessageType.PORT_INFORMATION,
350
+ portId,
351
+ informationType,
352
+ };
353
+ if (informationType === PortInformationType.MODE_INFO) {
354
+ message.capabilities = data[headerSize + 4];
355
+ message.modeCount = data[headerSize + 5];
356
+ message.inputModes = data.readUInt16LE(headerSize + 6);
357
+ message.outputModes = data.readUInt16LE(headerSize + 8);
358
+ }
359
+ else if (informationType === PortInformationType.POSSIBLE_MODE_COMBINATIONS) {
360
+ const combinations = [];
361
+ for (let i = headerSize + 4; i < data.length; i += 2) {
362
+ if (i + 1 < data.length) {
363
+ combinations.push(data.readUInt16LE(i));
364
+ }
365
+ }
366
+ message.modeCombinations = combinations;
367
+ }
368
+ return message;
369
+ }
370
+ function decodePortModeInformationMessage(data, headerSize) {
371
+ const portId = data[headerSize + 2];
372
+ const mode = data[headerSize + 3];
373
+ const informationType = data[headerSize + 4];
374
+ const message = {
375
+ type: MessageType.PORT_MODE_INFORMATION,
376
+ portId,
377
+ mode,
378
+ informationType,
379
+ };
380
+ const payload = data.subarray(headerSize + 5);
381
+ switch (informationType) {
382
+ case ModeInformationType.NAME:
383
+ message.name = payload.toString("ascii").replace(/\0+$/, "");
384
+ break;
385
+ case ModeInformationType.RAW:
386
+ message.rawRange = {
387
+ min: payload.readFloatLE(0),
388
+ max: payload.readFloatLE(4),
389
+ };
390
+ break;
391
+ case ModeInformationType.PCT:
392
+ message.pctRange = {
393
+ min: payload.readFloatLE(0),
394
+ max: payload.readFloatLE(4),
395
+ };
396
+ break;
397
+ case ModeInformationType.SI:
398
+ message.siRange = {
399
+ min: payload.readFloatLE(0),
400
+ max: payload.readFloatLE(4),
401
+ };
402
+ break;
403
+ case ModeInformationType.SYMBOL:
404
+ message.symbol = payload.toString("ascii").replace(/\0+$/, "");
405
+ break;
406
+ case ModeInformationType.MAPPING:
407
+ message.mapping = payload.readUInt16LE(0);
408
+ break;
409
+ case ModeInformationType.MOTOR_BIAS:
410
+ message.motorBias = payload[0];
411
+ break;
412
+ case ModeInformationType.CAPABILITY_BITS:
413
+ message.capabilityBits = payload.subarray(0, 6);
414
+ break;
415
+ case ModeInformationType.VALUE_FORMAT:
416
+ message.valueFormat = {
417
+ datasetCount: payload[0],
418
+ datasetType: payload[1],
419
+ figures: payload[2],
420
+ decimals: payload[3],
421
+ };
422
+ break;
423
+ }
424
+ return message;
425
+ }
426
+ function decodePortValueSingleMessage(data, headerSize) {
427
+ return {
428
+ type: MessageType.PORT_VALUE_SINGLE,
429
+ portId: data[headerSize + 2],
430
+ value: data.subarray(headerSize + 3),
431
+ };
432
+ }
433
+ function decodePortValueCombinedMessage(data, headerSize) {
434
+ return {
435
+ type: MessageType.PORT_VALUE_COMBINEDMODE,
436
+ portId: data[headerSize + 2],
437
+ modeDatasets: data.readUInt16LE(headerSize + 3),
438
+ values: data.subarray(headerSize + 5),
439
+ };
440
+ }
441
+ function decodePortInputFormatSingleMessage(data, headerSize) {
442
+ return {
443
+ type: MessageType.PORT_INPUT_FORMAT_SINGLE,
444
+ portId: data[headerSize + 2],
445
+ mode: data[headerSize + 3],
446
+ deltaInterval: data.readUInt32LE(headerSize + 4),
447
+ notificationEnabled: data[headerSize + 8] === 1,
448
+ };
449
+ }
450
+ function decodePortInputFormatCombinedMessage(data, headerSize) {
451
+ return {
452
+ type: MessageType.PORT_INPUT_FORMAT_COMBINEDMODE,
453
+ portId: data[headerSize + 2],
454
+ combinedControl: data[headerSize + 3],
455
+ modeDatasetPointer: data.readUInt16LE(headerSize + 4),
456
+ };
457
+ }
458
+ function decodePortOutputFeedbackMessage(data, headerSize) {
459
+ return {
460
+ type: MessageType.PORT_OUTPUT_COMMAND_FEEDBACK,
461
+ portId: data[headerSize + 2],
462
+ feedback: data[headerSize + 3],
463
+ };
464
+ }
465
+ // ============================================================================
466
+ // Message Encoding
467
+ // ============================================================================
468
+ /**
469
+ * Wrap payload with LWP3 message header
470
+ */
471
+ function encodeMessage(messageType, payload) {
472
+ const length = 3 + payload.length; // length byte(s) + hub ID (0x00) + message type + payload
473
+ const header = encodeMessageLength(length);
474
+ return Buffer.concat([
475
+ header,
476
+ Buffer.from([0x00, messageType]),
477
+ payload,
478
+ ]);
479
+ }
480
+ /**
481
+ * Create hub property request message
482
+ */
483
+ function createHubPropertyRequest(property, operation) {
484
+ return encodeMessage(MessageType.HUB_PROPERTIES, Buffer.from([property, operation]));
485
+ }
486
+ /**
487
+ * Create hub property set message (for writable properties)
488
+ */
489
+ function createHubPropertySet(property, value) {
490
+ return encodeMessage(MessageType.HUB_PROPERTIES, Buffer.concat([Buffer.from([property, HubPropertyOperation.SET]), value]));
491
+ }
492
+ /**
493
+ * Create hub action message
494
+ */
495
+ function createHubAction(action) {
496
+ return encodeMessage(MessageType.HUB_ACTIONS, Buffer.from([action]));
497
+ }
498
+ /**
499
+ * Create alert subscription message
500
+ */
501
+ function createAlertSubscription(alertType, enable) {
502
+ return encodeMessage(MessageType.HUB_ALERTS, Buffer.from([alertType, enable ? AlertOperation.ENABLE_UPDATE : AlertOperation.DISABLE_UPDATE]));
503
+ }
504
+ /**
505
+ * Create port information request message
506
+ */
507
+ function createPortInformationRequest(portId, informationType) {
508
+ return encodeMessage(MessageType.PORT_INFORMATION_REQUEST, Buffer.from([portId, informationType]));
509
+ }
510
+ /**
511
+ * Create port mode information request message
512
+ */
513
+ function createPortModeInformationRequest(portId, mode, infoType) {
514
+ return encodeMessage(MessageType.PORT_MODE_INFORMATION_REQUEST, Buffer.from([portId, mode, infoType]));
515
+ }
516
+ /**
517
+ * Create port input format setup (subscribe/unsubscribe to notifications)
518
+ */
519
+ function createPortInputFormatSetup(portId, mode, deltaInterval, notificationEnabled) {
520
+ const payload = Buffer.alloc(8);
521
+ payload[0] = portId;
522
+ payload[1] = mode;
523
+ payload.writeUInt32LE(deltaInterval, 2);
524
+ payload[6] = notificationEnabled ? 1 : 0;
525
+ return encodeMessage(MessageType.PORT_INPUT_FORMAT_SETUP_SINGLE, payload);
526
+ }
527
+ /**
528
+ * Create virtual port setup message (connect/disconnect)
529
+ */
530
+ function createVirtualPortSetup(connect, portIdA, portIdB, virtualPortId) {
531
+ if (connect && portIdB !== undefined) {
532
+ return encodeMessage(MessageType.VIRTUAL_PORT_SETUP, Buffer.from([0x01, portIdA, portIdB]));
533
+ }
534
+ else if (!connect && virtualPortId !== undefined) {
535
+ return encodeMessage(MessageType.VIRTUAL_PORT_SETUP, Buffer.from([0x00, virtualPortId]));
536
+ }
537
+ throw new Error("Invalid virtual port setup parameters");
538
+ }
539
+ // ============================================================================
540
+ // Port Output Commands
541
+ // ============================================================================
542
+ /**
543
+ * Create port output command wrapper
544
+ */
545
+ function createPortOutputCommand(portId, startupCompletion, subCommand, payload) {
546
+ return encodeMessage(MessageType.PORT_OUTPUT_COMMAND, Buffer.concat([Buffer.from([portId, startupCompletion, subCommand]), payload]));
547
+ }
548
+ /**
549
+ * Set motor power (unregulated)
550
+ */
551
+ function createStartPower(portId, power) {
552
+ // Clamp power to -100..100
553
+ power = Math.max(-100, Math.min(100, power));
554
+ const signedPower = power < 0 ? 256 + power : power;
555
+ return createPortOutputCommand(portId, 0x11, // Execute immediately, command feedback
556
+ MotorSubCommand.WRITE_DIRECT_MODE_DATA, Buffer.from([0x00, signedPower]) // Mode 0 = power
557
+ );
558
+ }
559
+ /**
560
+ * Set motor power for dual motors (virtual port)
561
+ */
562
+ function createStartPowerDual(portId, power1, power2) {
563
+ power1 = Math.max(-100, Math.min(100, power1));
564
+ power2 = Math.max(-100, Math.min(100, power2));
565
+ const signedPower1 = power1 < 0 ? 256 + power1 : power1;
566
+ const signedPower2 = power2 < 0 ? 256 + power2 : power2;
567
+ return createPortOutputCommand(portId, 0x11, MotorSubCommand.START_POWER_DUAL, Buffer.from([signedPower1, signedPower2]));
568
+ }
569
+ /**
570
+ * Set motor speed (regulated)
571
+ */
572
+ function createStartSpeed(portId, speed, maxPower = 100, useProfile = types_1.Profile.DO_NOT_USE) {
573
+ speed = Math.max(-100, Math.min(100, speed));
574
+ maxPower = Math.max(0, Math.min(100, maxPower));
575
+ const signedSpeed = speed < 0 ? 256 + speed : speed;
576
+ return createPortOutputCommand(portId, 0x11, MotorSubCommand.START_SPEED, Buffer.from([signedSpeed, maxPower, useProfile]));
577
+ }
578
+ /**
579
+ * Set motor speed for dual motors (virtual port)
580
+ */
581
+ function createStartSpeedDual(portId, speed1, speed2, maxPower = 100, useProfile = types_1.Profile.DO_NOT_USE) {
582
+ speed1 = Math.max(-100, Math.min(100, speed1));
583
+ speed2 = Math.max(-100, Math.min(100, speed2));
584
+ maxPower = Math.max(0, Math.min(100, maxPower));
585
+ const signedSpeed1 = speed1 < 0 ? 256 + speed1 : speed1;
586
+ const signedSpeed2 = speed2 < 0 ? 256 + speed2 : speed2;
587
+ return createPortOutputCommand(portId, 0x11, MotorSubCommand.START_SPEED_DUAL, Buffer.from([signedSpeed1, signedSpeed2, maxPower, useProfile]));
588
+ }
589
+ /**
590
+ * Run motor for a specified time
591
+ */
592
+ function createStartSpeedForTime(portId, time, speed, maxPower = 100, endState = types_1.BrakingStyle.BRAKE, useProfile = types_1.Profile.DO_NOT_USE) {
593
+ speed = Math.max(-100, Math.min(100, speed));
594
+ maxPower = Math.max(0, Math.min(100, maxPower));
595
+ const signedSpeed = speed < 0 ? 256 + speed : speed;
596
+ const payload = Buffer.alloc(6);
597
+ payload.writeUInt16LE(time, 0);
598
+ payload[2] = signedSpeed;
599
+ payload[3] = maxPower;
600
+ payload[4] = endState;
601
+ payload[5] = useProfile;
602
+ return createPortOutputCommand(portId, 0x11, MotorSubCommand.START_SPEED_FOR_TIME, payload);
603
+ }
604
+ /**
605
+ * Run motor for a specified number of degrees
606
+ */
607
+ function createStartSpeedForDegrees(portId, degrees, speed, maxPower = 100, endState = types_1.BrakingStyle.BRAKE, useProfile = types_1.Profile.DO_NOT_USE) {
608
+ speed = Math.max(-100, Math.min(100, speed));
609
+ maxPower = Math.max(0, Math.min(100, maxPower));
610
+ const signedSpeed = speed < 0 ? 256 + speed : speed;
611
+ const payload = Buffer.alloc(8);
612
+ payload.writeInt32LE(Math.abs(degrees), 0);
613
+ payload[4] = signedSpeed;
614
+ payload[5] = maxPower;
615
+ payload[6] = endState;
616
+ payload[7] = useProfile;
617
+ return createPortOutputCommand(portId, 0x11, MotorSubCommand.START_SPEED_FOR_DEGREES, payload);
618
+ }
619
+ /**
620
+ * Go to absolute position
621
+ */
622
+ function createGotoAbsolutePosition(portId, position, speed, maxPower = 100, endState = types_1.BrakingStyle.BRAKE, useProfile = types_1.Profile.DO_NOT_USE) {
623
+ speed = Math.max(0, Math.min(100, Math.abs(speed)));
624
+ maxPower = Math.max(0, Math.min(100, maxPower));
625
+ const payload = Buffer.alloc(8);
626
+ payload.writeInt32LE(position, 0);
627
+ payload[4] = speed;
628
+ payload[5] = maxPower;
629
+ payload[6] = endState;
630
+ payload[7] = useProfile;
631
+ return createPortOutputCommand(portId, 0x11, MotorSubCommand.GOTO_ABSOLUTE_POSITION, payload);
632
+ }
633
+ /**
634
+ * Preset (reset) encoder position
635
+ */
636
+ function createPresetEncoder(portId, position = 0) {
637
+ const payload = Buffer.alloc(4);
638
+ payload.writeInt32LE(position, 0);
639
+ return createPortOutputCommand(portId, 0x11, MotorSubCommand.WRITE_DIRECT_MODE_DATA, Buffer.concat([Buffer.from([0x02]), payload]) // Mode 2 = position preset
640
+ );
641
+ }
642
+ /**
643
+ * Set acceleration time
644
+ */
645
+ function createSetAccTime(portId, time, profileNumber = 0) {
646
+ const payload = Buffer.alloc(3);
647
+ payload.writeUInt16LE(time, 0);
648
+ payload[2] = profileNumber;
649
+ return createPortOutputCommand(portId, 0x11, MotorSubCommand.SET_ACC_TIME, payload);
650
+ }
651
+ /**
652
+ * Set deceleration time
653
+ */
654
+ function createSetDecTime(portId, time, profileNumber = 0) {
655
+ const payload = Buffer.alloc(3);
656
+ payload.writeUInt16LE(time, 0);
657
+ payload[2] = profileNumber;
658
+ return createPortOutputCommand(portId, 0x11, MotorSubCommand.SET_DEC_TIME, payload);
659
+ }
660
+ // ============================================================================
661
+ // LED Commands
662
+ // ============================================================================
663
+ /**
664
+ * Set LED color by color number
665
+ */
666
+ function createSetLEDColor(portId, color) {
667
+ return createPortOutputCommand(portId, 0x11, MotorSubCommand.WRITE_DIRECT_MODE_DATA, Buffer.from([0x00, color]) // Mode 0 = color number
668
+ );
669
+ }
670
+ /**
671
+ * Set LED color by RGB values
672
+ */
673
+ function createSetLEDRGB(portId, red, green, blue) {
674
+ red = Math.max(0, Math.min(255, red));
675
+ green = Math.max(0, Math.min(255, green));
676
+ blue = Math.max(0, Math.min(255, blue));
677
+ return createPortOutputCommand(portId, 0x11, MotorSubCommand.WRITE_DIRECT_MODE_DATA, Buffer.from([0x01, red, green, blue]) // Mode 1 = RGB
678
+ );
679
+ }
680
+ // ============================================================================
681
+ // Utility Functions
682
+ // ============================================================================
683
+ /**
684
+ * Parse motor feedback flags
685
+ */
686
+ function parseMotorFeedback(feedback) {
687
+ return {
688
+ portId: 0, // To be set by caller
689
+ busy: (feedback & 0x01) !== 0,
690
+ completed: (feedback & 0x02) !== 0,
691
+ discarded: (feedback & 0x04) !== 0,
692
+ };
693
+ }
694
+ /**
695
+ * Convert hub property payload to typed value
696
+ */
697
+ function parseHubPropertyValue(property, payload) {
698
+ switch (property) {
699
+ case HubProperty.ADVERTISING_NAME:
700
+ return payload.toString("ascii").replace(/\0+$/, "");
701
+ case HubProperty.BUTTON:
702
+ return payload[0] === 1 ? types_1.ButtonState.PRESSED : types_1.ButtonState.RELEASED;
703
+ case HubProperty.FW_VERSION:
704
+ case HubProperty.HW_VERSION:
705
+ return decodeVersion(payload);
706
+ case HubProperty.RSSI:
707
+ return payload.readInt8(0);
708
+ case HubProperty.BATTERY_VOLTAGE:
709
+ return payload[0];
710
+ case HubProperty.BATTERY_TYPE:
711
+ return payload[0];
712
+ case HubProperty.MANUFACTURER_NAME:
713
+ case HubProperty.RADIO_FIRMWARE_VERSION:
714
+ return payload.toString("ascii").replace(/\0+$/, "");
715
+ case HubProperty.LWP_PROTOCOL_VERSION:
716
+ return `${(payload[1] >> 4) & 0x0f}${payload[1] & 0x0f}.${(payload[0] >> 4) & 0x0f}${payload[0] & 0x0f}`;
717
+ case HubProperty.SYSTEM_TYPE_ID:
718
+ return payload[0];
719
+ case HubProperty.HW_NETWORK_ID:
720
+ return payload[0];
721
+ case HubProperty.PRIMARY_MAC_ADDRESS:
722
+ case HubProperty.SECONDARY_MAC_ADDRESS:
723
+ return decodeMACAddress(payload);
724
+ case HubProperty.HW_NETWORK_FAMILY:
725
+ return payload[0];
726
+ default:
727
+ return payload;
728
+ }
729
+ }
730
+ //# sourceMappingURL=protocol.js.map