node-poweredup 9.0.0 → 10.1.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 (633) hide show
  1. package/README.md +6 -12
  2. package/dist/browser/poweredup.js +6193 -3
  3. package/dist/browser/poweredup.js.map +7 -1
  4. package/dist/{node/color.d.ts → color.d.ts} +1 -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/{node/consts.d.ts → consts.d.ts} +57 -16
  9. package/dist/consts.d.ts.map +1 -0
  10. package/dist/{node/consts.js → consts.js} +115 -76
  11. package/dist/consts.js.map +1 -0
  12. package/dist/{node/devices → devices}/absolutemotor.d.ts +12 -13
  13. package/dist/devices/absolutemotor.d.ts.map +1 -0
  14. package/dist/devices/absolutemotor.js +108 -0
  15. package/dist/devices/absolutemotor.js.map +1 -0
  16. package/dist/devices/basicmotor.d.ts +38 -0
  17. package/dist/devices/basicmotor.d.ts.map +1 -0
  18. package/dist/devices/basicmotor.js +51 -0
  19. package/dist/devices/basicmotor.js.map +1 -0
  20. package/dist/{node/devices → devices}/colordistancesensor.d.ts +20 -25
  21. package/dist/devices/colordistancesensor.d.ts.map +1 -0
  22. package/dist/{node/devices → devices}/colordistancesensor.js +40 -79
  23. package/dist/devices/colordistancesensor.js.map +1 -0
  24. package/dist/{node/devices → devices}/currentsensor.d.ts +3 -3
  25. package/dist/devices/currentsensor.d.ts.map +1 -0
  26. package/dist/{node/devices → devices}/currentsensor.js +7 -34
  27. package/dist/devices/currentsensor.js.map +1 -0
  28. package/dist/{node/devices → devices}/device.d.ts +18 -11
  29. package/dist/devices/device.d.ts.map +1 -0
  30. package/dist/devices/device.js +350 -0
  31. package/dist/devices/device.js.map +1 -0
  32. package/dist/{node/devices → devices}/duplotrainbasecolorsensor.d.ts +3 -3
  33. package/dist/devices/duplotrainbasecolorsensor.d.ts.map +1 -0
  34. package/dist/{node/devices → devices}/duplotrainbasecolorsensor.js +9 -36
  35. package/dist/devices/duplotrainbasecolorsensor.js.map +1 -0
  36. package/dist/{node/devices → devices}/duplotrainbasemotor.d.ts +3 -2
  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 +35 -0
  43. package/dist/devices/duplotrainbasespeaker.js.map +1 -0
  44. package/dist/{node/devices → devices}/duplotrainbasespeedometer.d.ts +3 -3
  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 +29 -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/{node/devices → devices}/light.d.ts +10 -8
  53. package/dist/devices/light.d.ts.map +1 -0
  54. package/dist/devices/light.js +38 -0
  55. package/dist/devices/light.js.map +1 -0
  56. package/dist/{node/devices → devices}/marioaccelerometer.d.ts +3 -3
  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/{node/devices → devices}/mariobarcodesensor.d.ts +3 -3
  61. package/dist/devices/mariobarcodesensor.d.ts.map +1 -0
  62. package/dist/{node/devices → devices}/mariobarcodesensor.js +7 -34
  63. package/dist/devices/mariobarcodesensor.js.map +1 -0
  64. package/dist/{node/devices → devices}/mariopantssensor.d.ts +3 -3
  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/{node/devices → devices}/mediumlinearmotor.d.ts +3 -2
  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/{node/devices → devices}/motionsensor.d.ts +3 -3
  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/{node/devices → devices}/movehubmediumlinearmotor.d.ts +3 -2
  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/{node/devices → devices}/movehubtiltsensor.d.ts +3 -3
  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 +18 -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/{node/devices → devices}/remotecontrolbutton.d.ts +3 -3
  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/{node/devices → devices}/simplemediumlinearmotor.d.ts +3 -2
  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/{node/devices → devices}/tachomotor.d.ts +19 -19
  97. package/dist/devices/tachomotor.d.ts.map +1 -0
  98. package/dist/devices/tachomotor.js +155 -0
  99. package/dist/devices/tachomotor.js.map +1 -0
  100. package/dist/{node/devices → devices}/technic3x3colorlightmatrix.d.ts +6 -5
  101. package/dist/devices/technic3x3colorlightmatrix.d.ts.map +1 -0
  102. package/dist/devices/technic3x3colorlightmatrix.js +50 -0
  103. package/dist/devices/technic3x3colorlightmatrix.js.map +1 -0
  104. package/dist/{node/devices → devices}/techniccolorsensor.d.ts +12 -8
  105. package/dist/devices/techniccolorsensor.d.ts.map +1 -0
  106. package/dist/devices/techniccolorsensor.js +162 -0
  107. package/dist/devices/techniccolorsensor.js.map +1 -0
  108. package/dist/{node/devices → devices}/technicdistancesensor.d.ts +4 -5
  109. package/dist/devices/technicdistancesensor.d.ts.map +1 -0
  110. package/dist/{node/devices → devices}/technicdistancesensor.js +8 -36
  111. package/dist/devices/technicdistancesensor.js.map +1 -0
  112. package/dist/{node/devices → devices}/technicforcesensor.d.ts +3 -3
  113. package/dist/devices/technicforcesensor.d.ts.map +1 -0
  114. package/dist/{node/devices → devices}/technicforcesensor.js +7 -34
  115. package/dist/devices/technicforcesensor.js.map +1 -0
  116. package/dist/{node/devices → devices}/techniclargeangularmotor.d.ts +4 -3
  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/{node/devices → devices}/techniclargelinearmotor.d.ts +3 -2
  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/{node/devices → devices}/technicmediumangularmotor.d.ts +4 -3
  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/{node/devices → devices}/technicmediumhubaccelerometersensor.d.ts +3 -3
  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/{node/devices → devices}/technicmediumhubgyrosensor.d.ts +3 -3
  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 +39 -0
  137. package/dist/devices/technicmediumhubtiltsensor.d.ts.map +1 -0
  138. package/dist/devices/technicmediumhubtiltsensor.js +94 -0
  139. package/dist/devices/technicmediumhubtiltsensor.js.map +1 -0
  140. package/dist/{node/devices → devices}/technicsmallangularmotor.d.ts +4 -3
  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/{node/devices → devices}/technicxlargelinearmotor.d.ts +3 -2
  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/{node/devices → devices}/tiltsensor.d.ts +7 -4
  149. package/dist/devices/tiltsensor.d.ts.map +1 -0
  150. package/dist/devices/tiltsensor.js +117 -0
  151. package/dist/devices/tiltsensor.js.map +1 -0
  152. package/dist/{node/devices → devices}/trainmotor.d.ts +3 -2
  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/{node/devices → devices}/voltagesensor.d.ts +3 -3
  157. package/dist/devices/voltagesensor.d.ts.map +1 -0
  158. package/dist/{node/devices → devices}/voltagesensor.js +7 -34
  159. package/dist/devices/voltagesensor.js.map +1 -0
  160. package/dist/{node/hubs → hubs}/basehub.d.ts +5 -14
  161. package/dist/hubs/basehub.d.ts.map +1 -0
  162. package/dist/{node/hubs → hubs}/basehub.js +91 -110
  163. package/dist/hubs/basehub.js.map +1 -0
  164. package/dist/{node/hubs → hubs}/duplotrainbase.d.ts +4 -4
  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/{node/hubs → hubs}/hub.d.ts +4 -4
  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/{node/hubs → hubs}/lpf2hub.d.ts +3 -5
  173. package/dist/hubs/lpf2hub.d.ts.map +1 -0
  174. package/dist/{node/hubs → hubs}/lpf2hub.js +28 -47
  175. package/dist/hubs/lpf2hub.js.map +1 -0
  176. package/dist/{node/hubs → hubs}/mario.d.ts +4 -4
  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/{node/hubs → hubs}/movehub.d.ts +4 -4
  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/{node/hubs → hubs}/remotecontrol.d.ts +4 -4
  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/{node/hubs → hubs}/technicmediumhub.d.ts +4 -4
  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/{node/hubs → hubs}/technicsmallhub.d.ts +4 -4
  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/{node/hubs → hubs}/wedo2smarthub.d.ts +4 -7
  197. package/dist/hubs/wedo2smarthub.d.ts.map +1 -0
  198. package/dist/{node/hubs → hubs}/wedo2smarthub.js +10 -39
  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/{node/index-node.d.ts → index-node.js} +48 -46
  207. package/dist/index-node.js.map +1 -0
  208. package/dist/{node/interfaces.d.ts → interfaces.d.ts} +3 -4
  209. package/dist/interfaces.d.ts.map +1 -0
  210. package/dist/interfaces.js +2 -0
  211. package/dist/{node/interfaces.js.map → interfaces.js.map} +1 -1
  212. package/dist/{node/nobleabstraction.d.ts → nobleabstraction.d.ts} +3 -4
  213. package/dist/nobleabstraction.d.ts.map +1 -0
  214. package/dist/{node/nobleabstraction.js → nobleabstraction.js} +5 -9
  215. package/dist/nobleabstraction.js.map +1 -0
  216. package/dist/portoutputcommand.d.ts +13 -0
  217. package/dist/portoutputcommand.d.ts.map +1 -0
  218. package/dist/portoutputcommand.js +30 -0
  219. package/dist/portoutputcommand.js.map +1 -0
  220. package/dist/portoutputsleep.d.ts +6 -0
  221. package/dist/portoutputsleep.d.ts.map +1 -0
  222. package/dist/portoutputsleep.js +10 -0
  223. package/dist/portoutputsleep.js.map +1 -0
  224. package/dist/{node/poweredup-browser.d.ts → poweredup-browser.d.ts} +2 -8
  225. package/dist/poweredup-browser.d.ts.map +1 -0
  226. package/dist/{node/poweredup-browser.js → poweredup-browser.js} +23 -55
  227. package/dist/poweredup-browser.js.map +1 -0
  228. package/dist/{node/poweredup-node.d.ts → poweredup-node.d.ts} +3 -10
  229. package/dist/poweredup-node.d.ts.map +1 -0
  230. package/dist/{node/poweredup-node.js → poweredup-node.js} +32 -66
  231. package/dist/poweredup-node.js.map +1 -0
  232. package/dist/{node/utils.d.ts → utils.d.ts} +2 -4
  233. package/dist/utils.d.ts.map +1 -0
  234. package/dist/utils.js +84 -0
  235. package/dist/utils.js.map +1 -0
  236. package/dist/{node/webbleabstraction.d.ts → webbleabstraction.d.ts} +3 -4
  237. package/dist/webbleabstraction.d.ts.map +1 -0
  238. package/dist/{node/webbleabstraction.js → webbleabstraction.js} +3 -7
  239. package/dist/webbleabstraction.js.map +1 -0
  240. package/docs/.nojekyll +1 -0
  241. package/docs/assets/hierarchy.js +1 -0
  242. package/docs/assets/highlight.css +99 -0
  243. package/docs/assets/icons.js +18 -0
  244. package/docs/assets/icons.svg +1 -0
  245. package/docs/assets/main.js +60 -0
  246. package/docs/assets/navigation.js +1 -0
  247. package/docs/assets/search.js +1 -0
  248. package/docs/assets/style.css +1633 -0
  249. package/docs/classes/AbsoluteMotor.html +242 -0
  250. package/docs/classes/BaseHub.html +220 -0
  251. package/docs/classes/BasicMotor.html +201 -0
  252. package/docs/classes/Color.html +3 -0
  253. package/docs/classes/ColorDistanceSensor.html +214 -0
  254. package/docs/classes/CurrentSensor.html +185 -0
  255. package/docs/classes/Device.html +185 -0
  256. package/docs/classes/DuploTrainBase.html +233 -0
  257. package/docs/classes/DuploTrainBaseColorSensor.html +185 -0
  258. package/docs/classes/DuploTrainBaseMotor.html +201 -0
  259. package/docs/classes/DuploTrainBaseSpeaker.html +191 -0
  260. package/docs/classes/DuploTrainBaseSpeedometer.html +185 -0
  261. package/docs/classes/Hub.html +233 -0
  262. package/docs/classes/HubLED.html +191 -0
  263. package/docs/classes/Light.html +195 -0
  264. package/docs/classes/Mario.html +233 -0
  265. package/docs/classes/MediumLinearMotor.html +229 -0
  266. package/docs/classes/MotionSensor.html +185 -0
  267. package/docs/classes/MoveHub.html +233 -0
  268. package/docs/classes/MoveHubMediumLinearMotor.html +229 -0
  269. package/docs/classes/MoveHubTiltSensor.html +185 -0
  270. package/docs/classes/PiezoBuzzer.html +189 -0
  271. package/docs/classes/PoweredUP.html +180 -0
  272. package/docs/classes/RemoteControl.html +233 -0
  273. package/docs/classes/RemoteControlButton.html +185 -0
  274. package/docs/classes/SimpleMediumLinearMotor.html +201 -0
  275. package/docs/classes/TachoMotor.html +229 -0
  276. package/docs/classes/Technic3x3ColorLightMatrix.html +189 -0
  277. package/docs/classes/TechnicColorSensor.html +191 -0
  278. package/docs/classes/TechnicDistanceSensor.html +192 -0
  279. package/docs/classes/TechnicForceSensor.html +185 -0
  280. package/docs/classes/TechnicLargeAngularMotor.html +242 -0
  281. package/docs/classes/TechnicLargeLinearMotor.html +242 -0
  282. package/docs/classes/TechnicMediumAngularMotor.html +242 -0
  283. package/docs/classes/TechnicMediumHub.html +233 -0
  284. package/docs/classes/TechnicMediumHubAccelerometerSensor.html +185 -0
  285. package/docs/classes/TechnicMediumHubGyroSensor.html +185 -0
  286. package/docs/classes/TechnicMediumHubTiltSensor.html +197 -0
  287. package/docs/classes/TechnicSmallAngularMotor.html +242 -0
  288. package/docs/classes/TechnicXLargeLinearMotor.html +242 -0
  289. package/docs/classes/TiltSensor.html +185 -0
  290. package/docs/classes/TrainMotor.html +201 -0
  291. package/docs/classes/VoltageSensor.html +185 -0
  292. package/docs/classes/WeDo2SmartHub.html +229 -0
  293. package/docs/enums/ActionType.html +22 -0
  294. package/docs/enums/AlertOperation.html +10 -0
  295. package/docs/enums/AlertPayload.html +6 -0
  296. package/docs/enums/AlertType.html +10 -0
  297. package/docs/enums/BLECharacteristic.html +15 -0
  298. package/docs/enums/BLEManufacturerData.html +8 -0
  299. package/docs/enums/BLEService.html +7 -0
  300. package/docs/enums/BrakingStyle.html +7 -0
  301. package/docs/enums/ButtonState.html +11 -0
  302. package/docs/enums/Consts.Color.html +25 -0
  303. package/docs/enums/DeviceType.html +79 -0
  304. package/docs/enums/DuploTrainBaseSound.html +11 -0
  305. package/docs/enums/ErrorCode.html +18 -0
  306. package/docs/enums/Event.html +8 -0
  307. package/docs/enums/HWNetWorkCommandType.html +28 -0
  308. package/docs/enums/HWNetworkFamily.html +20 -0
  309. package/docs/enums/HWNetworkSubFamily.html +16 -0
  310. package/docs/enums/HubPropertyOperation.html +14 -0
  311. package/docs/enums/HubPropertyPayload.html +32 -0
  312. package/docs/enums/HubPropertyReference.html +32 -0
  313. package/docs/enums/HubType.html +19 -0
  314. package/docs/enums/IOTypeID.html +30 -0
  315. package/docs/enums/MarioColor.html +17 -0
  316. package/docs/enums/MarioPantsType.html +13 -0
  317. package/docs/enums/MessageType.html +48 -0
  318. package/docs/enums/ModeInformationType.html +22 -0
  319. package/docs/enums/PortInputFormatSetupSubCommand.html +14 -0
  320. package/docs/hierarchy.html +1 -0
  321. package/docs/index.html +18 -120
  322. package/docs/modules/Consts.html +1 -0
  323. package/docs/modules.html +1 -0
  324. package/docs/variables/ColorNames.html +1 -0
  325. package/docs/variables/DeviceTypeNames.html +1 -0
  326. package/docs/variables/HubTypeNames.html +1 -0
  327. package/docs/variables/isWebBluetooth.html +1 -0
  328. package/package.json +19 -25
  329. package/src/color.ts +1 -1
  330. package/src/consts.ts +60 -16
  331. package/src/devices/absolutemotor.ts +28 -38
  332. package/src/devices/basicmotor.ts +20 -30
  333. package/src/devices/colordistancesensor.ts +31 -43
  334. package/src/devices/currentsensor.ts +3 -3
  335. package/src/devices/device.ts +200 -22
  336. package/src/devices/duplotrainbasecolorsensor.ts +4 -4
  337. package/src/devices/duplotrainbasemotor.ts +3 -3
  338. package/src/devices/duplotrainbasespeaker.ts +8 -13
  339. package/src/devices/duplotrainbasespeedometer.ts +3 -3
  340. package/src/devices/hubled.ts +25 -27
  341. package/src/devices/light.ts +15 -24
  342. package/src/devices/marioaccelerometer.ts +3 -3
  343. package/src/devices/mariobarcodesensor.ts +3 -3
  344. package/src/devices/mariopantssensor.ts +3 -3
  345. package/src/devices/mediumlinearmotor.ts +3 -3
  346. package/src/devices/motionsensor.ts +3 -3
  347. package/src/devices/movehubmediumlinearmotor.ts +3 -3
  348. package/src/devices/movehubtiltsensor.ts +3 -3
  349. package/src/devices/piezobuzzer.ts +6 -7
  350. package/src/devices/remotecontrolbutton.ts +3 -3
  351. package/src/devices/simplemediumlinearmotor.ts +3 -3
  352. package/src/devices/tachomotor.ts +52 -64
  353. package/src/devices/technic3x3colorlightmatrix.ts +24 -28
  354. package/src/devices/techniccolorsensor.ts +106 -15
  355. package/src/devices/technicdistancesensor.ts +4 -5
  356. package/src/devices/technicforcesensor.ts +3 -3
  357. package/src/devices/techniclargeangularmotor.ts +3 -3
  358. package/src/devices/techniclargelinearmotor.ts +3 -3
  359. package/src/devices/technicmediumangularmotor.ts +3 -3
  360. package/src/devices/technicmediumhubaccelerometersensor.ts +3 -3
  361. package/src/devices/technicmediumhubgyrosensor.ts +3 -3
  362. package/src/devices/technicmediumhubtiltsensor.ts +15 -27
  363. package/src/devices/technicsmallangularmotor.ts +3 -3
  364. package/src/devices/technicxlargelinearmotor.ts +3 -3
  365. package/src/devices/tiltsensor.ts +88 -8
  366. package/src/devices/trainmotor.ts +3 -3
  367. package/src/devices/voltagesensor.ts +3 -3
  368. package/src/hubs/basehub.ts +60 -51
  369. package/src/hubs/duplotrainbase.ts +5 -5
  370. package/src/hubs/hub.ts +5 -5
  371. package/src/hubs/lpf2hub.ts +16 -12
  372. package/src/hubs/mario.ts +5 -5
  373. package/src/hubs/movehub.ts +5 -5
  374. package/src/hubs/remotecontrol.ts +5 -5
  375. package/src/hubs/technicmediumhub.ts +5 -5
  376. package/src/hubs/technicsmallhub.ts +5 -5
  377. package/src/hubs/wedo2smarthub.ts +7 -9
  378. package/src/index-browser.ts +46 -46
  379. package/src/index-node.ts +47 -46
  380. package/src/interfaces.ts +2 -2
  381. package/src/nobleabstraction.ts +10 -10
  382. package/src/portoutputcommand.ts +37 -0
  383. package/src/portoutputsleep.ts +11 -0
  384. package/src/poweredup-browser.ts +15 -19
  385. package/src/poweredup-node.ts +15 -22
  386. package/src/utils.ts +15 -20
  387. package/src/webbleabstraction.ts +3 -3
  388. package/tsconfig.tsbuildinfo +1 -0
  389. package/typedoc.json +14 -0
  390. package/webpack.config.cjs +35 -0
  391. package/.jsdoc.json +0 -40
  392. package/abandonware-noble.d.ts +0 -129
  393. package/dist/browser/poweredup.js.LICENSE.txt +0 -8
  394. package/dist/node/color.js +0 -42
  395. package/dist/node/color.js.map +0 -1
  396. package/dist/node/consts.js.map +0 -1
  397. package/dist/node/devices/absolutemotor.js +0 -145
  398. package/dist/node/devices/absolutemotor.js.map +0 -1
  399. package/dist/node/devices/basicmotor.d.ts +0 -40
  400. package/dist/node/devices/basicmotor.js +0 -88
  401. package/dist/node/devices/basicmotor.js.map +0 -1
  402. package/dist/node/devices/colordistancesensor.js.map +0 -1
  403. package/dist/node/devices/currentsensor.js.map +0 -1
  404. package/dist/node/devices/device.js +0 -189
  405. package/dist/node/devices/device.js.map +0 -1
  406. package/dist/node/devices/duplotrainbasecolorsensor.js.map +0 -1
  407. package/dist/node/devices/duplotrainbasemotor.js +0 -39
  408. package/dist/node/devices/duplotrainbasemotor.js.map +0 -1
  409. package/dist/node/devices/duplotrainbasespeaker.d.ts +0 -28
  410. package/dist/node/devices/duplotrainbasespeaker.js +0 -67
  411. package/dist/node/devices/duplotrainbasespeaker.js.map +0 -1
  412. package/dist/node/devices/duplotrainbasespeedometer.js +0 -61
  413. package/dist/node/devices/duplotrainbasespeedometer.js.map +0 -1
  414. package/dist/node/devices/hubled.d.ts +0 -29
  415. package/dist/node/devices/hubled.js +0 -87
  416. package/dist/node/devices/hubled.js.map +0 -1
  417. package/dist/node/devices/light.js +0 -73
  418. package/dist/node/devices/light.js.map +0 -1
  419. package/dist/node/devices/marioaccelerometer.js +0 -77
  420. package/dist/node/devices/marioaccelerometer.js.map +0 -1
  421. package/dist/node/devices/mariobarcodesensor.js.map +0 -1
  422. package/dist/node/devices/mariopantssensor.js +0 -61
  423. package/dist/node/devices/mariopantssensor.js.map +0 -1
  424. package/dist/node/devices/mediumlinearmotor.js +0 -39
  425. package/dist/node/devices/mediumlinearmotor.js.map +0 -1
  426. package/dist/node/devices/motionsensor.js +0 -65
  427. package/dist/node/devices/motionsensor.js.map +0 -1
  428. package/dist/node/devices/movehubmediumlinearmotor.js +0 -39
  429. package/dist/node/devices/movehubmediumlinearmotor.js.map +0 -1
  430. package/dist/node/devices/movehubtiltsensor.js +0 -63
  431. package/dist/node/devices/movehubtiltsensor.js.map +0 -1
  432. package/dist/node/devices/piezobuzzer.d.ts +0 -17
  433. package/dist/node/devices/piezobuzzer.js +0 -55
  434. package/dist/node/devices/piezobuzzer.js.map +0 -1
  435. package/dist/node/devices/remotecontrolbutton.js +0 -67
  436. package/dist/node/devices/remotecontrolbutton.js.map +0 -1
  437. package/dist/node/devices/simplemediumlinearmotor.js +0 -39
  438. package/dist/node/devices/simplemediumlinearmotor.js.map +0 -1
  439. package/dist/node/devices/tachomotor.js +0 -194
  440. package/dist/node/devices/tachomotor.js.map +0 -1
  441. package/dist/node/devices/technic3x3colorlightmatrix.js +0 -81
  442. package/dist/node/devices/technic3x3colorlightmatrix.js.map +0 -1
  443. package/dist/node/devices/techniccolorsensor.js +0 -99
  444. package/dist/node/devices/techniccolorsensor.js.map +0 -1
  445. package/dist/node/devices/technicdistancesensor.js.map +0 -1
  446. package/dist/node/devices/technicforcesensor.js.map +0 -1
  447. package/dist/node/devices/techniclargeangularmotor.js +0 -39
  448. package/dist/node/devices/techniclargeangularmotor.js.map +0 -1
  449. package/dist/node/devices/techniclargelinearmotor.js +0 -39
  450. package/dist/node/devices/techniclargelinearmotor.js.map +0 -1
  451. package/dist/node/devices/technicmediumangularmotor.js +0 -39
  452. package/dist/node/devices/technicmediumangularmotor.js.map +0 -1
  453. package/dist/node/devices/technicmediumhubaccelerometersensor.js +0 -65
  454. package/dist/node/devices/technicmediumhubaccelerometersensor.js.map +0 -1
  455. package/dist/node/devices/technicmediumhubgyrosensor.js +0 -65
  456. package/dist/node/devices/technicmediumhubgyrosensor.js.map +0 -1
  457. package/dist/node/devices/technicmediumhubtiltsensor.d.ts +0 -41
  458. package/dist/node/devices/technicmediumhubtiltsensor.js +0 -133
  459. package/dist/node/devices/technicmediumhubtiltsensor.js.map +0 -1
  460. package/dist/node/devices/technicsmallangularmotor.js +0 -39
  461. package/dist/node/devices/technicsmallangularmotor.js.map +0 -1
  462. package/dist/node/devices/technicxlargelinearmotor.js +0 -39
  463. package/dist/node/devices/technicxlargelinearmotor.js.map +0 -1
  464. package/dist/node/devices/tiltsensor.js +0 -63
  465. package/dist/node/devices/tiltsensor.js.map +0 -1
  466. package/dist/node/devices/trainmotor.js +0 -39
  467. package/dist/node/devices/trainmotor.js.map +0 -1
  468. package/dist/node/devices/voltagesensor.js.map +0 -1
  469. package/dist/node/hubs/basehub.js.map +0 -1
  470. package/dist/node/hubs/duplotrainbase.js +0 -62
  471. package/dist/node/hubs/duplotrainbase.js.map +0 -1
  472. package/dist/node/hubs/hub.js +0 -71
  473. package/dist/node/hubs/hub.js.map +0 -1
  474. package/dist/node/hubs/lpf2hub.js.map +0 -1
  475. package/dist/node/hubs/mario.js +0 -58
  476. package/dist/node/hubs/mario.js.map +0 -1
  477. package/dist/node/hubs/movehub.js +0 -73
  478. package/dist/node/hubs/movehub.js.map +0 -1
  479. package/dist/node/hubs/remotecontrol.js +0 -64
  480. package/dist/node/hubs/remotecontrol.js.map +0 -1
  481. package/dist/node/hubs/technicmediumhub.js +0 -69
  482. package/dist/node/hubs/technicmediumhub.js.map +0 -1
  483. package/dist/node/hubs/technicsmallhub.js +0 -68
  484. package/dist/node/hubs/technicsmallhub.js.map +0 -1
  485. package/dist/node/hubs/wedo2smarthub.js.map +0 -1
  486. package/dist/node/index-browser.d.ts +0 -1
  487. package/dist/node/index-browser.js +0 -121
  488. package/dist/node/index-browser.js.map +0 -1
  489. package/dist/node/index-node.js +0 -120
  490. package/dist/node/index-node.js.map +0 -1
  491. package/dist/node/interfaces.js +0 -3
  492. package/dist/node/nobleabstraction.js.map +0 -1
  493. package/dist/node/poweredup-browser.js.map +0 -1
  494. package/dist/node/poweredup-node.js.map +0 -1
  495. package/dist/node/utils.js +0 -102
  496. package/dist/node/utils.js.map +0 -1
  497. package/dist/node/webbleabstraction.js.map +0 -1
  498. package/docs/AbsoluteMotor.html +0 -2008
  499. package/docs/BaseHub.html +0 -1391
  500. package/docs/BasicMotor.html +0 -1459
  501. package/docs/ColorDistanceSensor.html +0 -3025
  502. package/docs/CurrentSensor.html +0 -1022
  503. package/docs/Device.html +0 -841
  504. package/docs/DuploTrainBase.html +0 -2092
  505. package/docs/DuploTrainBaseColorSensor.html +0 -1509
  506. package/docs/DuploTrainBaseMotor.html +0 -1479
  507. package/docs/DuploTrainBaseSpeaker.html +0 -1193
  508. package/docs/DuploTraniBaseSpeedometer.html +0 -871
  509. package/docs/Hub.html +0 -7451
  510. package/docs/HubLED.html +0 -1239
  511. package/docs/LPF2Hub.html +0 -2066
  512. package/docs/Light.html +0 -1239
  513. package/docs/Mario.html +0 -2092
  514. package/docs/MarioAccelerometer.html +0 -1215
  515. package/docs/MarioBarcodeSensor.html +0 -1215
  516. package/docs/MarioPantsSensor.html +0 -1022
  517. package/docs/MediumLinearMotor.html +0 -1357
  518. package/docs/MotionSensor.html +0 -1022
  519. package/docs/MoveHub.html +0 -2092
  520. package/docs/MoveHubMediumLinearMotor.html +0 -1357
  521. package/docs/MoveHubTiltSensor.html +0 -1045
  522. package/docs/PiezoBuzzer.html +0 -1057
  523. package/docs/PoweredUP.html +0 -4371
  524. package/docs/RemoteControl.html +0 -2092
  525. package/docs/RemoteControlButton.html +0 -1022
  526. package/docs/SimpleMediumLinearMotor.html +0 -871
  527. package/docs/TachoMotor.html +0 -2620
  528. package/docs/Technic3x3ColorLightMatrix.html +0 -1037
  529. package/docs/TechnicColorSensor.html +0 -1525
  530. package/docs/TechnicDistanceSensor.html +0 -1401
  531. package/docs/TechnicForceSensor.html +0 -1316
  532. package/docs/TechnicLargeAngularMotor.html +0 -2028
  533. package/docs/TechnicLargeLinearMotor.html +0 -2028
  534. package/docs/TechnicMediumAngularMotor.html +0 -2028
  535. package/docs/TechnicMediumHub.html +0 -2092
  536. package/docs/TechnicMediumHubAccelerometerSensor.html +0 -1068
  537. package/docs/TechnicMediumHubGyroSensor.html +0 -1068
  538. package/docs/TechnicMediumHubTiltSensor.html +0 -1696
  539. package/docs/TechnicSmallAngularMotor.html +0 -2028
  540. package/docs/TechnicXLargeLinearMotor.html +0 -2028
  541. package/docs/TiltSensor.html +0 -1045
  542. package/docs/TrainMotor.html +0 -1479
  543. package/docs/VoltageSensor.html +0 -1022
  544. package/docs/WeDo2SmartHub.html +0 -1887
  545. package/docs/consts.js.html +0 -728
  546. package/docs/devices_absolutemotor.js.html +0 -195
  547. package/docs/devices_basicmotor.js.html +0 -138
  548. package/docs/devices_colordistancesensor.js.html +0 -361
  549. package/docs/devices_currentsensor.js.html +0 -132
  550. package/docs/devices_device.js.html +0 -239
  551. package/docs/devices_duplotrainbasecolorsensor.js.html +0 -154
  552. package/docs/devices_duplotrainbasemotor.js.html +0 -89
  553. package/docs/devices_duplotrainbasespeaker.js.html +0 -117
  554. package/docs/devices_duplotrainbasespeedometer.js.html +0 -111
  555. package/docs/devices_hubled.js.html +0 -137
  556. package/docs/devices_light.js.html +0 -123
  557. package/docs/devices_marioaccelerometer.js.html +0 -127
  558. package/docs/devices_mariobarcodesensor.js.html +0 -135
  559. package/docs/devices_mariopantssensor.js.html +0 -111
  560. package/docs/devices_mediumlinearmotor.js.html +0 -89
  561. package/docs/devices_motionsensor.js.html +0 -115
  562. package/docs/devices_movehubmediumlinearmotor.js.html +0 -89
  563. package/docs/devices_movehubtiltsensor.js.html +0 -113
  564. package/docs/devices_piezobuzzer.js.html +0 -105
  565. package/docs/devices_remotecontrolbutton.js.html +0 -117
  566. package/docs/devices_simplemediumlinearmotor.js.html +0 -89
  567. package/docs/devices_tachomotor.js.html +0 -244
  568. package/docs/devices_technic3x3colorlightmatrix.js.html +0 -131
  569. package/docs/devices_techniccolorsensor.js.html +0 -149
  570. package/docs/devices_technicdistancesensor.js.html +0 -135
  571. package/docs/devices_technicforcesensor.js.html +0 -135
  572. package/docs/devices_techniclargeangularmotor.js.html +0 -89
  573. package/docs/devices_techniclargelinearmotor.js.html +0 -89
  574. package/docs/devices_technicmediumangularmotor.js.html +0 -89
  575. package/docs/devices_technicmediumhubaccelerometersensor.js.html +0 -115
  576. package/docs/devices_technicmediumhubgyrosensor.js.html +0 -115
  577. package/docs/devices_technicmediumhubtiltsensor.js.html +0 -183
  578. package/docs/devices_technicsmallangularmotor.js.html +0 -89
  579. package/docs/devices_technicxlargelinearmotor.js.html +0 -89
  580. package/docs/devices_tiltsensor.js.html +0 -113
  581. package/docs/devices_trainmotor.js.html +0 -89
  582. package/docs/devices_voltagesensor.js.html +0 -136
  583. package/docs/fonts/OpenSans-Bold-webfont.eot +0 -0
  584. package/docs/fonts/OpenSans-Bold-webfont.svg +0 -1830
  585. package/docs/fonts/OpenSans-Bold-webfont.woff +0 -0
  586. package/docs/fonts/OpenSans-BoldItalic-webfont.eot +0 -0
  587. package/docs/fonts/OpenSans-BoldItalic-webfont.svg +0 -1830
  588. package/docs/fonts/OpenSans-BoldItalic-webfont.woff +0 -0
  589. package/docs/fonts/OpenSans-Italic-webfont.eot +0 -0
  590. package/docs/fonts/OpenSans-Italic-webfont.svg +0 -1830
  591. package/docs/fonts/OpenSans-Italic-webfont.woff +0 -0
  592. package/docs/fonts/OpenSans-Light-webfont.eot +0 -0
  593. package/docs/fonts/OpenSans-Light-webfont.svg +0 -1831
  594. package/docs/fonts/OpenSans-Light-webfont.woff +0 -0
  595. package/docs/fonts/OpenSans-LightItalic-webfont.eot +0 -0
  596. package/docs/fonts/OpenSans-LightItalic-webfont.svg +0 -1835
  597. package/docs/fonts/OpenSans-LightItalic-webfont.woff +0 -0
  598. package/docs/fonts/OpenSans-Regular-webfont.eot +0 -0
  599. package/docs/fonts/OpenSans-Regular-webfont.svg +0 -1831
  600. package/docs/fonts/OpenSans-Regular-webfont.woff +0 -0
  601. package/docs/fonts/OpenSans-Semibold-webfont.eot +0 -0
  602. package/docs/fonts/OpenSans-Semibold-webfont.svg +0 -1830
  603. package/docs/fonts/OpenSans-Semibold-webfont.ttf +0 -0
  604. package/docs/fonts/OpenSans-Semibold-webfont.woff +0 -0
  605. package/docs/fonts/OpenSans-SemiboldItalic-webfont.eot +0 -0
  606. package/docs/fonts/OpenSans-SemiboldItalic-webfont.svg +0 -1830
  607. package/docs/fonts/OpenSans-SemiboldItalic-webfont.ttf +0 -0
  608. package/docs/fonts/OpenSans-SemiboldItalic-webfont.woff +0 -0
  609. package/docs/global.html +0 -3996
  610. package/docs/hubs_basehub.js.html +0 -469
  611. package/docs/hubs_duplotrainbase.js.html +0 -112
  612. package/docs/hubs_hub.js.html +0 -121
  613. package/docs/hubs_lpf2hub.js.html +0 -391
  614. package/docs/hubs_mario.js.html +0 -108
  615. package/docs/hubs_movehub.js.html +0 -123
  616. package/docs/hubs_remotecontrol.js.html +0 -114
  617. package/docs/hubs_technicmediumhub.js.html +0 -119
  618. package/docs/hubs_technicsmallhub.js.html +0 -118
  619. package/docs/hubs_wedo2smarthub.js.html +0 -265
  620. package/docs/icons/home.svg +0 -4
  621. package/docs/icons/search.svg +0 -4
  622. package/docs/poweredup-browser.js.html +0 -292
  623. package/docs/poweredup-node.js.html +0 -250
  624. package/docs/scripts/linenumber.js +0 -25
  625. package/docs/scripts/pagelocation.js +0 -89
  626. package/docs/scripts/prettify/Apache-License-2.0.txt +0 -202
  627. package/docs/scripts/prettify/lang-css.js +0 -2
  628. package/docs/scripts/prettify/prettify.js +0 -28
  629. package/docs/styles/collapse.css +0 -27
  630. package/docs/styles/jsdoc-default.css +0 -358
  631. package/docs/styles/prettify-jsdoc.css +0 -111
  632. package/docs/styles/prettify-tomorrow.css +0 -132
  633. package/noble-mac.d.ts +0 -3
@@ -1,9 +1,9 @@
1
- import { Device } from "./device";
1
+ import { Device } from "./device.js";
2
2
 
3
- import { IDeviceInterface } from "../interfaces";
3
+ import { IDeviceInterface } from "../interfaces.js";
4
4
 
5
- import * as Consts from "../consts";
6
- import { parseColor } from "../utils";
5
+ import * as Consts from "../consts.js";
6
+ import { parseColor } from "../utils.js";
7
7
 
8
8
  /**
9
9
  * @class ColorDistanceSensor
@@ -157,9 +157,8 @@ export class ColorDistanceSensor extends Device {
157
157
  * Switches the IR receiver into extended channel mode. After setting this, use channels 5-8 instead of 1-4 for this receiver.
158
158
  *
159
159
  * NOTE: Calling this with channel 5-8 with switch off extended channel mode for this receiver.
160
- * @method ColorDistanceSensor#setPFExtendedChannel
161
160
  * @param {number} channel Channel number, between 1-8
162
- * @returns {Promise} Resolved upon successful issuance of the command.
161
+ * @returns {Promise<CommandFeedback>} Resolved upon completion of the command.
163
162
  */
164
163
  public setPFExtendedChannel (channel: number) {
165
164
  let address = 0;
@@ -177,11 +176,10 @@ export class ColorDistanceSensor extends Device {
177
176
 
178
177
  /**
179
178
  * Set the power of a Power Functions motor via IR
180
- * @method ColorDistanceSensor#setPFPower
181
179
  * @param {number} channel Channel number, between 1-4
182
180
  * @param {string} output Outport port, "RED" (A) or "BLUE" (B)
183
181
  * @param {number} power -7 (full reverse) to 7 (full forward). 0 is stop. 8 is brake.
184
- * @returns {Promise} Resolved upon successful issuance of the command.
182
+ * @returns {Promise<CommandFeedback>} Resolved upon completion of the command.
185
183
  */
186
184
  public setPFPower (channel: number, output: Output, power: number) {
187
185
  let address = 0;
@@ -201,11 +199,10 @@ export class ColorDistanceSensor extends Device {
201
199
  * Start Power Functions motors running via IR
202
200
  *
203
201
  * NOTE: This command is designed for bang-bang style operation. To keep the motors running, the sensor needs to be within range of the IR receiver constantly.
204
- * @method ColorDistanceSensor#startPFMotors
205
- * @param {Buffer} channel Channel number, between 1-4
206
- * @param {Buffer} powerA -7 (full reverse) to 7 (full forward). 0 is stop. 8 is brake.
207
- * @param {Buffer} powerB -7 (full reverse) to 7 (full forward). 0 is stop. 8 is brake.
208
- * @returns {Promise} Resolved upon successful issuance of the command.
202
+ * @param {number} channel Channel number, between 1-4
203
+ * @param {number} powerBlue -7 (full reverse) to 7 (full forward). 0 is stop. 8 is brake.
204
+ * @param {number} powerRed -7 (full reverse) to 7 (full forward). 0 is stop. 8 is brake.
205
+ * @returns {Promise<CommandFeedback>} Resolved upon completion of the command.
209
206
  */
210
207
  public startPFMotors (channel: number, powerBlue: number, powerRed: number) {
211
208
  let address = 0;
@@ -223,9 +220,8 @@ export class ColorDistanceSensor extends Device {
223
220
 
224
221
  /**
225
222
  * Send a raw Power Functions IR command
226
- * @method ColorDistanceSensor#sendPFIRMessage
227
223
  * @param {Buffer} message 2 byte payload making up a Power Functions protocol command. NOTE: Only specify nibbles 1-3, nibble 4 should be zeroed.
228
- * @returns {Promise} Resolved upon successful issuance of the command.
224
+ * @returns {Promise<CommandFeedback>} Resolved upon completion of the command.
229
225
  */
230
226
  public sendPFIRMessage (message: Buffer) {
231
227
  if (this.isWeDo2SmartHub) {
@@ -242,43 +238,35 @@ export class ColorDistanceSensor extends Device {
242
238
 
243
239
  /**
244
240
  * Set the color of the LED on the sensor via a color value.
245
- * @method ColorDistanceSensor#setColor
246
241
  * @param {Color} color
247
- * @returns {Promise} Resolved upon successful issuance of the command.
242
+ * @returns {Promise<CommandFeedback>} Resolved upon completion of the command.
248
243
  */
249
244
  public setColor (color: number | boolean) {
250
- return new Promise<void>((resolve) => {
251
- if (color === false) {
252
- color = 0;
253
- }
254
- if (this.isWeDo2SmartHub) {
255
- throw new Error("Setting LED color is not available on the WeDo 2.0 Smart Hub");
256
- } else {
257
- this.subscribe(Mode.LED);
258
- this.writeDirect(0x05, Buffer.from([color as number]));
259
- }
260
- return resolve();
261
- });
245
+ if (color === false) {
246
+ color = 0;
247
+ }
248
+ if (this.isWeDo2SmartHub) {
249
+ throw new Error("Setting LED color is not available on the WeDo 2.0 Smart Hub");
250
+ } else {
251
+ this.subscribe(Mode.LED);
252
+ return this.writeDirect(0x05, Buffer.from([color as number]));
253
+ }
262
254
  }
263
255
 
264
256
  /**
265
257
  * Set the distance count value.
266
- * @method ColorDistanceSensor#setDistanceCount
267
- * @param {count} distance count between 0 and 2^32
268
- * @returns {Promise} Resolved upon successful issuance of the command.
258
+ * @param {number} count distance count between 0 and 2^32
259
+ * @returns {Promise<CommandFeedback>} Resolved upon completion of the command.
269
260
  */
270
261
  public setDistanceCount (count: number) {
271
- return new Promise<void>((resolve) => {
272
- if (this.isWeDo2SmartHub) {
273
- throw new Error("Setting distance count is not available on the WeDo 2.0 Smart Hub");
274
- } else {
275
- const payload = Buffer.alloc(4);
276
- payload.writeUInt32LE(count % 2**32);
277
- // no need to subscribe, can be set in different mode
278
- this.writeDirect(0x02, payload);
279
- }
280
- return resolve();
281
- });
262
+ if (this.isWeDo2SmartHub) {
263
+ throw new Error("Setting distance count is not available on the WeDo 2.0 Smart Hub");
264
+ } else {
265
+ const payload = Buffer.alloc(4);
266
+ payload.writeUInt32LE(count % 2**32);
267
+ // no need to subscribe, can be set in different mode
268
+ return this.writeDirect(0x02, payload);
269
+ }
282
270
  }
283
271
 
284
272
  private _pfPowerToPWM (power: number) {
@@ -1,8 +1,8 @@
1
- import { Device } from "./device";
1
+ import { Device } from "./device.js";
2
2
 
3
- import { IDeviceInterface } from "../interfaces";
3
+ import { IDeviceInterface } from "../interfaces.js";
4
4
 
5
- import * as Consts from "../consts";
5
+ import * as Consts from "../consts.js";
6
6
 
7
7
  /**
8
8
  * @class CurrentSensor
@@ -1,8 +1,13 @@
1
1
  import { EventEmitter } from "events";
2
2
 
3
- import { IDeviceInterface } from "../interfaces";
3
+ import { IDeviceInterface } from "../interfaces.js";
4
+ import { PortOutputCommand } from "../portoutputcommand.js";
5
+ import { PortOutputSleep } from "../portoutputsleep.js";
4
6
 
5
- import * as Consts from "../consts";
7
+ import * as Consts from "../consts.js";
8
+
9
+ import Debug = require("debug");
10
+ const debug = Debug("device");
6
11
 
7
12
  /**
8
13
  * @class Device
@@ -14,8 +19,9 @@ export class Device extends EventEmitter {
14
19
  public values: {[event: string]: any} = {};
15
20
 
16
21
  protected _mode: number | undefined;
17
- protected _busy: boolean = false;
18
- protected _finishedCallbacks: (() => void)[] = [];
22
+ protected _bufferLength: number = 0;
23
+ protected _nextPortOutputCommands: (PortOutputCommand | PortOutputSleep)[] = [];
24
+ protected _transmittedPortOutputCommands: PortOutputCommand[] = [];
19
25
 
20
26
  private _hub: IDeviceInterface;
21
27
  private _portId: number;
@@ -25,7 +31,6 @@ export class Device extends EventEmitter {
25
31
 
26
32
  private _isWeDo2SmartHub: boolean;
27
33
  private _isVirtualPort: boolean = false;
28
- private _eventTimer: NodeJS.Timeout | null = null;
29
34
 
30
35
  constructor (hub: IDeviceInterface, portId: number, modeMap: {[event: string]: number} = {}, type: Consts.DeviceType = Consts.DeviceType.UNKNOWN) {
31
36
  super();
@@ -126,11 +131,11 @@ export class Device extends EventEmitter {
126
131
  return this._isVirtualPort;
127
132
  }
128
133
 
129
- public writeDirect (mode: number, data: Buffer) {
134
+ public writeDirect (mode: number, data: Buffer, interrupt: boolean = false) {
130
135
  if (this.isWeDo2SmartHub) {
131
- return this.send(Buffer.concat([Buffer.from([this.portId, 0x01, 0x02]), data]), Consts.BLECharacteristic.WEDO2_MOTOR_VALUE_WRITE);
136
+ return this.send(Buffer.concat([Buffer.from([this.portId, 0x01, 0x02]), data]), Consts.BLECharacteristic.WEDO2_MOTOR_VALUE_WRITE).then(() => { return Consts.CommandFeedback.FEEDBACK_DISABLED; });
132
137
  } else {
133
- return this.send(Buffer.concat([Buffer.from([0x81, this.portId, 0x11, 0x51, mode]), data]), Consts.BLECharacteristic.LPF2_ALL);
138
+ return this.sendPortOutputCommand(Buffer.concat([Buffer.from([0x51, mode]), data]), interrupt);
134
139
  }
135
140
  }
136
141
 
@@ -142,7 +147,6 @@ export class Device extends EventEmitter {
142
147
  public subscribe (mode: number) {
143
148
  this._ensureConnected();
144
149
  if (mode !== this._mode) {
145
- this._mode = mode;
146
150
  this.hub.subscribe(this.portId, this.type, mode);
147
151
  }
148
152
  }
@@ -167,26 +171,180 @@ export class Device extends EventEmitter {
167
171
  this.send(Buffer.from([0x21, this.portId, 0x00]));
168
172
  }
169
173
 
170
- public finish (message: number) {
171
- if((message & 0x10) === 0x10) return; // "busy/full"
172
- this._busy = (message & 0x01) === 0x01;
173
- while(this._finishedCallbacks.length > Number(this._busy)) {
174
- const callback = this._finishedCallbacks.shift();
175
- if(callback) {
176
- callback();
174
+ public setMode (mode: number) {
175
+ this._mode = mode;
176
+ }
177
+
178
+ protected transmitNextPortOutputCommand() {
179
+ if(!this.connected) {
180
+ this._transmittedPortOutputCommands.forEach(command => command.resolve(Consts.CommandFeedback.FEEDBACK_MISSING));
181
+ this._transmittedPortOutputCommands = [];
182
+ this._nextPortOutputCommands.forEach(command => command.resolve(Consts.CommandFeedback.TRANSMISSION_DISCARDED));
183
+ this._nextPortOutputCommands = [];
184
+ return;
185
+ }
186
+ if(!this._nextPortOutputCommands.length) return;
187
+ const nextCommand = this._nextPortOutputCommands[0];
188
+ if(nextCommand instanceof PortOutputSleep) {
189
+ if(nextCommand.state === Consts.CommandFeedback.EXECUTION_PENDING) {
190
+ nextCommand.state = Consts.CommandFeedback.EXECUTION_BUSY;
191
+ debug("sleep command ", nextCommand.duration);
192
+ setTimeout(() => {
193
+ if(nextCommand.state !== Consts.CommandFeedback.EXECUTION_BUSY) return;
194
+ const command = this._nextPortOutputCommands.shift();
195
+ if(command) command.resolve(Consts.CommandFeedback.EXECUTION_COMPLETED);
196
+ this.transmitNextPortOutputCommand();
197
+ }, nextCommand.duration);
177
198
  }
199
+ return;
200
+ }
201
+ if(this._bufferLength !== this._transmittedPortOutputCommands.length) return;
202
+ if(this._bufferLength < 2 || nextCommand.interrupt) {
203
+ if(nextCommand.state === Consts.CommandFeedback.TRANSMISSION_PENDING) {
204
+ nextCommand.state = Consts.CommandFeedback.TRANSMISSION_BUSY;
205
+ debug("transmit command ", nextCommand.startupAndCompletion, nextCommand.data);
206
+ this.send(Buffer.concat([Buffer.from([0x81, this.portId, nextCommand.startupAndCompletion]), nextCommand.data])).then(() => {
207
+ if(nextCommand.state !== Consts.CommandFeedback.TRANSMISSION_BUSY) return;
208
+ const command = this._nextPortOutputCommands.shift();
209
+ if(command instanceof PortOutputCommand) this._transmittedPortOutputCommands.push(command);
210
+ });
211
+ this.transmitNextPortOutputCommand(); // if the next command is PortOutputSleep this starts sleep timeout
212
+ // one could start a timer here to ensure finish function is called
213
+ }
214
+ }
215
+ }
216
+
217
+ public sendPortOutputCommand(data: Buffer, interrupt: boolean = false) {
218
+ if (this.isWeDo2SmartHub) {
219
+ throw new Error("PortOutputCommands are not available on the WeDo 2.0 Smart Hub");
220
+ return;
221
+ }
222
+ const command = new PortOutputCommand(data, interrupt);
223
+ if(interrupt) {
224
+ this._nextPortOutputCommands.forEach(command => {
225
+ if(command.state !== Consts.CommandFeedback.TRANSMISSION_BUSY) {
226
+ command.resolve(Consts.CommandFeedback.TRANSMISSION_DISCARDED);
227
+ }
228
+ });
229
+ this._nextPortOutputCommands = this._nextPortOutputCommands.filter(command => command.state === Consts.CommandFeedback.TRANSMISSION_BUSY);
178
230
  }
231
+ this._nextPortOutputCommands.push(command);
232
+ process.nextTick(() => this.transmitNextPortOutputCommand());
233
+ return command.promise;
179
234
  }
180
235
 
181
- public setEventTimer (timer: NodeJS.Timeout) {
182
- this._eventTimer = timer;
236
+ public addPortOutputSleep(duration: number) {
237
+ const command = new PortOutputSleep(duration);
238
+ this._nextPortOutputCommands.push(command);
239
+ process.nextTick(() => this.transmitNextPortOutputCommand());
240
+ return command.promise;
183
241
  }
184
242
 
185
- public cancelEventTimer () {
186
- if (this._eventTimer) {
187
- clearTimeout(this._eventTimer);
188
- this._eventTimer = null;
243
+ public finish (message: number) {
244
+ debug("recieved command feedback ", message);
245
+ if((message & 0x08) === 0x08) this._bufferLength = 0;
246
+ else if((message & 0x01) === 0x01) this._bufferLength = 1;
247
+ else if((message & 0x10) === 0x10) this._bufferLength = 2;
248
+ const completed = ((message & 0x02) === 0x02);
249
+ const discarded = ((message & 0x04) === 0x04);
250
+
251
+ switch(this._transmittedPortOutputCommands.length) {
252
+ case 0:
253
+ break;
254
+ case 1:
255
+ if(!this._bufferLength && completed && !discarded) {
256
+ this._complete();
257
+ }
258
+ else if(!this._bufferLength && !completed && discarded) {
259
+ this._discard();
260
+ }
261
+ else if(this._bufferLength && !completed && !discarded) {
262
+ this._busy();
263
+ }
264
+ else {
265
+ this._missing();
266
+ }
267
+ break;
268
+ case 2:
269
+ if(!this._bufferLength && completed && discarded) {
270
+ this._discard();
271
+ this._complete();
272
+ }
273
+ else if(!this._bufferLength && completed && !discarded) {
274
+ this._complete();
275
+ this._complete();
276
+ }
277
+ else if(!this._bufferLength && !completed && discarded) {
278
+ this._discard();
279
+ this._discard();
280
+ }
281
+ else if(this._bufferLength === 1 && completed && !discarded) {
282
+ this._complete();
283
+ this._busy();
284
+ }
285
+ else if(this._bufferLength === 1 && !completed && discarded) {
286
+ this._discard();
287
+ this._busy();
288
+ }
289
+ else if(this._bufferLength === 1 && completed && discarded) {
290
+ this._missing();
291
+ this._busy();
292
+ }
293
+ else if(this._bufferLength === 2 && !completed && !discarded) {
294
+ this._busy();
295
+ this._pending();
296
+ }
297
+ else {
298
+ this._missing();
299
+ this._missing();
300
+ }
301
+ break;
302
+ case 3:
303
+ if(!this._bufferLength && completed && discarded) {
304
+ this._discard();
305
+ this._discard();
306
+ this._complete();
307
+ }
308
+ else if(!this._bufferLength && completed && !discarded) {
309
+ this._complete();
310
+ this._complete();
311
+ this._complete();
312
+ }
313
+ else if(!this._bufferLength && !completed && discarded) {
314
+ this._discard();
315
+ this._discard();
316
+ this._discard();
317
+ }
318
+ else if(this._bufferLength === 1 && completed && discarded) {
319
+ this._discard();
320
+ this._complete();
321
+ this._busy();
322
+ }
323
+ else if(this._bufferLength === 1 && completed && !discarded) {
324
+ this._complete();
325
+ this._complete();
326
+ this._busy();
327
+ }
328
+ else if(this._bufferLength === 1 && !completed && discarded) {
329
+ this._discard();
330
+ this._discard();
331
+ this._busy();
332
+ }
333
+ else if(this._bufferLength === 1 && !completed && !discarded) {
334
+ this._missing();
335
+ this._missing();
336
+ this._busy();
337
+ }
338
+ // third command can only be interrupt, if this._bufferLength === 2 it was queued
339
+ else {
340
+ this._missing();
341
+ this._missing();
342
+ this._missing();
343
+ }
344
+ break;
189
345
  }
346
+
347
+ this.transmitNextPortOutputCommand();
190
348
  }
191
349
 
192
350
  private _ensureConnected () {
@@ -195,4 +353,24 @@ export class Device extends EventEmitter {
195
353
  }
196
354
  }
197
355
 
356
+ private _complete () {
357
+ const command = this._transmittedPortOutputCommands.shift();
358
+ if(command) command.resolve(Consts.CommandFeedback.EXECUTION_COMPLETED);
359
+ }
360
+ private _discard () {
361
+ const command = this._transmittedPortOutputCommands.shift();
362
+ if(command) command.resolve(Consts.CommandFeedback.EXECUTION_DISCARDED);
363
+ }
364
+ private _missing () {
365
+ const command = this._transmittedPortOutputCommands.shift();
366
+ if(command) command.resolve(Consts.CommandFeedback.FEEDBACK_MISSING);
367
+ }
368
+ private _busy () {
369
+ const command = this._transmittedPortOutputCommands[0];
370
+ if(command) command.state = Consts.CommandFeedback.EXECUTION_BUSY;
371
+ }
372
+ private _pending () {
373
+ const command = this._transmittedPortOutputCommands[1];
374
+ if(command) command.state = Consts.CommandFeedback.EXECUTION_PENDING;
375
+ }
198
376
  }
@@ -1,9 +1,9 @@
1
- import { Device } from "./device";
1
+ import { Device } from "./device.js";
2
2
 
3
- import { IDeviceInterface } from "../interfaces";
3
+ import { IDeviceInterface } from "../interfaces.js";
4
4
 
5
- import * as Consts from "../consts";
6
- import { parseColor } from "../utils";
5
+ import * as Consts from "../consts.js";
6
+ import { parseColor } from "../utils.js";
7
7
 
8
8
  /**
9
9
  * @class DuploTrainBaseColorSensor
@@ -1,8 +1,8 @@
1
- import { BasicMotor } from "./basicmotor";
1
+ import { BasicMotor } from "./basicmotor.js";
2
2
 
3
- import { IDeviceInterface } from "../interfaces";
3
+ import { IDeviceInterface } from "../interfaces.js";
4
4
 
5
- import * as Consts from "../consts";
5
+ import * as Consts from "../consts.js";
6
6
 
7
7
  /**
8
8
  * @class DuploTrainBaseMotor
@@ -1,8 +1,8 @@
1
- import { Device } from "./device";
1
+ import { Device } from "./device.js";
2
2
 
3
- import { IDeviceInterface } from "../interfaces";
3
+ import { IDeviceInterface } from "../interfaces.js";
4
4
 
5
- import * as Consts from "../consts";
5
+ import * as Consts from "../consts.js";
6
6
 
7
7
  /**
8
8
  * @class DuploTrainBaseSpeaker
@@ -16,27 +16,22 @@ export class DuploTrainBaseSpeaker extends Device {
16
16
 
17
17
  /**
18
18
  * Play a built-in train sound.
19
- * @method DuploTrainBaseSpeaker#playSound
20
19
  * @param {DuploTrainBaseSound} sound
21
- * @returns {Promise} Resolved upon successful issuance of the command.
20
+ * @returns {Promise<CommandFeedback>} Resolved upon completion of command.
22
21
  */
23
22
  public playSound (sound: Consts.DuploTrainBaseSound) {
24
- return new Promise<void>((resolve) => {
25
- this.subscribe(Mode.SOUND);
26
- this.writeDirect(0x01, Buffer.from([sound]));
27
- return resolve();
28
- });
23
+ this.subscribe(Mode.SOUND);
24
+ return this.writeDirect(0x01, Buffer.from([sound]));
29
25
  }
30
26
 
31
27
  /**
32
28
  * Play a built-in system tone.
33
- * @method DuploTrainBaseSpeaker#playTone
34
29
  * @param {number} tone
35
- * @returns {Promise} Resolved upon successful issuance of the command.
30
+ * @returns {Promise<CommandFeedback>} Resolved upon completion of command.
36
31
  */
37
32
  public playTone (tone: number) {
38
33
  this.subscribe(Mode.TONE);
39
- this.writeDirect(0x02, Buffer.from([tone]));
34
+ return this.writeDirect(0x02, Buffer.from([tone]));
40
35
  }
41
36
 
42
37
  }
@@ -1,8 +1,8 @@
1
- import { Device } from "./device";
1
+ import { Device } from "./device.js";
2
2
 
3
- import { IDeviceInterface } from "../interfaces";
3
+ import { IDeviceInterface } from "../interfaces.js";
4
4
 
5
- import * as Consts from "../consts";
5
+ import * as Consts from "../consts.js";
6
6
 
7
7
  /**
8
8
  * @class DuploTraniBaseSpeedometer
@@ -1,8 +1,8 @@
1
- import { Device } from "./device";
1
+ import { Device } from "./device.js";
2
2
 
3
- import { IDeviceInterface } from "../interfaces";
3
+ import { IDeviceInterface } from "../interfaces.js";
4
4
 
5
- import * as Consts from "../consts";
5
+ import * as Consts from "../consts.js";
6
6
 
7
7
  /**
8
8
  * @class HubLED
@@ -18,46 +18,44 @@ export class HubLED extends Device {
18
18
 
19
19
  /**
20
20
  * Set the color of the LED on the Hub via a color value.
21
- * @method HubLED#setColor
22
21
  * @param {Color} color
23
- * @returns {Promise} Resolved upon successful issuance of the command.
22
+ * @returns {Promise<CommandFeedback>} Resolved upon completion of command.
24
23
  */
25
24
  public setColor (color: number | boolean) {
26
- return new Promise<void>((resolve) => {
27
- if (typeof color === "boolean") {
28
- color = 0;
29
- }
30
- if (this.isWeDo2SmartHub) {
25
+ if (typeof color === "boolean") {
26
+ color = 0;
27
+ }
28
+ if (this.isWeDo2SmartHub) {
29
+ return new Promise<Consts.CommandFeedback>((resolve) => {
31
30
  this.send(Buffer.from([0x06, 0x17, 0x01, 0x01]), Consts.BLECharacteristic.WEDO2_PORT_TYPE_WRITE);
32
- this.send(Buffer.from([0x06, 0x04, 0x01, color]), Consts.BLECharacteristic.WEDO2_MOTOR_VALUE_WRITE);
33
- } else {
34
- this.subscribe(Mode.COLOR);
35
- this.writeDirect(0x00, Buffer.from([color]));
36
- }
37
- return resolve();
38
- });
31
+ this.send(Buffer.from([0x06, 0x04, 0x01, Number(color)]), Consts.BLECharacteristic.WEDO2_MOTOR_VALUE_WRITE);
32
+ return resolve(Consts.CommandFeedback.FEEDBACK_DISABLED);
33
+ })
34
+ } else {
35
+ this.subscribe(Mode.COLOR);
36
+ return this.writeDirect(0x00, Buffer.from([color]));
37
+ }
39
38
  }
40
39
 
41
40
 
42
41
  /**
43
42
  * Set the color of the LED on the Hub via RGB values.
44
- * @method HubLED#setRGB
45
43
  * @param {number} red
46
44
  * @param {number} green
47
45
  * @param {number} blue
48
- * @returns {Promise} Resolved upon successful issuance of the command.
46
+ * @returns {Promise<CommandFeedback>} Resolved upon completion of command.
49
47
  */
50
48
  public setRGB (red: number, green: number, blue: number) {
51
- return new Promise<void>((resolve) => {
52
- if (this.isWeDo2SmartHub) {
49
+ if (this.isWeDo2SmartHub) {
50
+ return new Promise<Consts.CommandFeedback>((resolve) => {
53
51
  this.send(Buffer.from([0x06, 0x17, 0x01, 0x02]), Consts.BLECharacteristic.WEDO2_PORT_TYPE_WRITE);
54
52
  this.send(Buffer.from([0x06, 0x04, 0x03, red, green, blue]), Consts.BLECharacteristic.WEDO2_MOTOR_VALUE_WRITE);
55
- } else {
56
- this.subscribe(Mode.RGB);
57
- this.writeDirect(0x01, Buffer.from([red, green, blue]));
58
- }
59
- return resolve();
60
- });
53
+ resolve(Consts.CommandFeedback.FEEDBACK_DISABLED);
54
+ });
55
+ } else {
56
+ this.subscribe(Mode.RGB);
57
+ return this.writeDirect(0x01, Buffer.from([red, green, blue]));
58
+ }
61
59
  }
62
60
 
63
61
 
@@ -1,9 +1,9 @@
1
- import { Device } from "./device";
1
+ import { Device } from "./device.js";
2
2
 
3
- import { IDeviceInterface } from "../interfaces";
3
+ import { IDeviceInterface } from "../interfaces.js";
4
4
 
5
- import * as Consts from "../consts";
6
- import { calculateRamp } from "../utils";
5
+ import * as Consts from "../consts.js";
6
+ import { calculateRamp } from "../utils.js";
7
7
 
8
8
  /**
9
9
  * @class Light
@@ -19,39 +19,30 @@ export class Light extends Device {
19
19
 
20
20
  /**
21
21
  * Set the light brightness.
22
- * @method Light#setBrightness
23
22
  * @param {number} brightness Brightness value between 0-100 (0 is off)
24
- * @returns {Promise} Resolved upon successful completion of command.
23
+ * @param {number} brightness Brightness value between 0-100 (0 is off)
24
+ * @param {boolean} [interrupt=false] If true, previous commands are discarded.
25
+ * @returns {Promise<CommandFeedback>} Resolved upon completion of command.
25
26
  */
26
- public setBrightness (brightness: number, interrupt: boolean = true) {
27
- if (interrupt) {
28
- this.cancelEventTimer();
29
- }
30
- return new Promise<void>((resolve) => {
31
- this.writeDirect(0x00, Buffer.from([brightness]));
32
- return resolve();
33
- });
27
+ public setBrightness (brightness: number, interrupt: boolean = false) {
28
+ return this.writeDirect(0x00, Buffer.from([brightness]), interrupt);
34
29
  }
35
30
 
36
31
 
37
32
  /**
38
33
  * Ramp the light brightness.
39
- * @method Light#rampBrightness
40
34
  * @param {number} fromBrightness Brightness value between 0-100 (0 is off)
41
35
  * @param {number} toBrightness Brightness value between 0-100 (0 is off)
42
36
  * @param {number} time How long the ramp should last (in milliseconds).
43
- * @returns {Promise} Resolved upon successful completion of command.
37
+ * @returns {Promise<CommandFeedback>} Resolved upon completion of command.
44
38
  */
45
39
  public rampBrightness (fromBrightness: number, toBrightness: number, time: number) {
46
- this.cancelEventTimer();
47
- return new Promise((resolve) => {
48
- calculateRamp(this, fromBrightness, toBrightness, time)
49
- .on("changePower", (power) => {
50
- this.setBrightness(power, false);
51
- })
52
- .on("finished", resolve);
40
+ const powerValues = calculateRamp(fromBrightness, toBrightness, time);
41
+ powerValues.forEach(value => {
42
+ this.setBrightness(value);
43
+ this.addPortOutputSleep(Math.round(time/powerValues.length));
53
44
  });
45
+ return this.setBrightness(toBrightness);
54
46
  }
55
47
 
56
-
57
48
  }
@@ -1,8 +1,8 @@
1
- import { Device } from "./device";
1
+ import { Device } from "./device.js";
2
2
 
3
- import { IDeviceInterface } from "../interfaces";
3
+ import { IDeviceInterface } from "../interfaces.js";
4
4
 
5
- import * as Consts from "../consts";
5
+ import * as Consts from "../consts.js";
6
6
 
7
7
  /**
8
8
  * @class MarioAccelerometer