node-poweredup 10.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 (313) hide show
  1. package/README.md +0 -1
  2. package/dist/browser/poweredup.js +6193 -0
  3. package/dist/browser/poweredup.js.map +7 -0
  4. package/dist/consts.d.ts +40 -0
  5. package/dist/consts.d.ts.map +1 -1
  6. package/dist/consts.js +42 -0
  7. package/dist/consts.js.map +1 -1
  8. package/dist/devices/absolutemotor.d.ts +8 -6
  9. package/dist/devices/absolutemotor.d.ts.map +1 -1
  10. package/dist/devices/absolutemotor.js +24 -31
  11. package/dist/devices/absolutemotor.js.map +1 -1
  12. package/dist/devices/basicmotor.d.ts +11 -10
  13. package/dist/devices/basicmotor.d.ts.map +1 -1
  14. package/dist/devices/basicmotor.js +16 -22
  15. package/dist/devices/basicmotor.js.map +1 -1
  16. package/dist/devices/colordistancesensor.d.ts +13 -12
  17. package/dist/devices/colordistancesensor.d.ts.map +1 -1
  18. package/dist/devices/colordistancesensor.js +25 -31
  19. package/dist/devices/colordistancesensor.js.map +1 -1
  20. package/dist/devices/device.d.ts +15 -6
  21. package/dist/devices/device.d.ts.map +1 -1
  22. package/dist/devices/device.js +209 -21
  23. package/dist/devices/device.js.map +1 -1
  24. package/dist/devices/duplotrainbasespeaker.d.ts +4 -4
  25. package/dist/devices/duplotrainbasespeaker.d.ts.map +1 -1
  26. package/dist/devices/duplotrainbasespeaker.js +5 -8
  27. package/dist/devices/duplotrainbasespeaker.js.map +1 -1
  28. package/dist/devices/hubled.d.ts +5 -4
  29. package/dist/devices/hubled.d.ts.map +1 -1
  30. package/dist/devices/hubled.js +24 -24
  31. package/dist/devices/hubled.js.map +1 -1
  32. package/dist/devices/light.d.ts +7 -4
  33. package/dist/devices/light.d.ts.map +1 -1
  34. package/dist/devices/light.js +11 -17
  35. package/dist/devices/light.js.map +1 -1
  36. package/dist/devices/piezobuzzer.d.ts +3 -2
  37. package/dist/devices/piezobuzzer.d.ts.map +1 -1
  38. package/dist/devices/piezobuzzer.js +2 -2
  39. package/dist/devices/piezobuzzer.js.map +1 -1
  40. package/dist/devices/tachomotor.d.ts +14 -8
  41. package/dist/devices/tachomotor.d.ts.map +1 -1
  42. package/dist/devices/tachomotor.js +50 -56
  43. package/dist/devices/tachomotor.js.map +1 -1
  44. package/dist/devices/technic3x3colorlightmatrix.d.ts +3 -2
  45. package/dist/devices/technic3x3colorlightmatrix.d.ts.map +1 -1
  46. package/dist/devices/technic3x3colorlightmatrix.js +20 -23
  47. package/dist/devices/technic3x3colorlightmatrix.js.map +1 -1
  48. package/dist/devices/techniccolorsensor.d.ts +9 -4
  49. package/dist/devices/techniccolorsensor.d.ts.map +1 -1
  50. package/dist/devices/techniccolorsensor.js +99 -8
  51. package/dist/devices/techniccolorsensor.js.map +1 -1
  52. package/dist/devices/technicdistancesensor.d.ts +1 -1
  53. package/dist/devices/technicdistancesensor.js +1 -1
  54. package/dist/devices/technicmediumhubtiltsensor.d.ts +7 -6
  55. package/dist/devices/technicmediumhubtiltsensor.d.ts.map +1 -1
  56. package/dist/devices/technicmediumhubtiltsensor.js +9 -18
  57. package/dist/devices/technicmediumhubtiltsensor.js.map +1 -1
  58. package/dist/devices/tiltsensor.d.ts +4 -1
  59. package/dist/devices/tiltsensor.d.ts.map +1 -1
  60. package/dist/devices/tiltsensor.js +84 -3
  61. package/dist/devices/tiltsensor.js.map +1 -1
  62. package/dist/hubs/basehub.d.ts +1 -0
  63. package/dist/hubs/basehub.d.ts.map +1 -1
  64. package/dist/hubs/basehub.js +17 -0
  65. package/dist/hubs/basehub.js.map +1 -1
  66. package/dist/hubs/lpf2hub.d.ts +1 -0
  67. package/dist/hubs/lpf2hub.d.ts.map +1 -1
  68. package/dist/hubs/lpf2hub.js +11 -0
  69. package/dist/hubs/lpf2hub.js.map +1 -1
  70. package/dist/portoutputcommand.d.ts +13 -0
  71. package/dist/portoutputcommand.d.ts.map +1 -0
  72. package/dist/portoutputcommand.js +30 -0
  73. package/dist/portoutputcommand.js.map +1 -0
  74. package/dist/portoutputsleep.d.ts +6 -0
  75. package/dist/portoutputsleep.d.ts.map +1 -0
  76. package/dist/portoutputsleep.js +10 -0
  77. package/dist/portoutputsleep.js.map +1 -0
  78. package/dist/utils.d.ts +1 -3
  79. package/dist/utils.d.ts.map +1 -1
  80. package/dist/utils.js +13 -19
  81. package/dist/utils.js.map +1 -1
  82. package/package.json +1 -1
  83. package/src/consts.ts +44 -0
  84. package/src/devices/absolutemotor.ts +24 -31
  85. package/src/devices/basicmotor.ts +16 -22
  86. package/src/devices/colordistancesensor.ts +23 -29
  87. package/src/devices/device.ts +198 -20
  88. package/src/devices/duplotrainbasespeaker.ts +5 -8
  89. package/src/devices/hubled.ts +22 -22
  90. package/src/devices/light.ts +11 -18
  91. package/src/devices/piezobuzzer.ts +3 -3
  92. package/src/devices/tachomotor.ts +47 -53
  93. package/src/devices/technic3x3colorlightmatrix.ts +20 -23
  94. package/src/devices/techniccolorsensor.ts +102 -10
  95. package/src/devices/technicdistancesensor.ts +1 -1
  96. package/src/devices/technicmediumhubtiltsensor.ts +9 -18
  97. package/src/devices/tiltsensor.ts +85 -5
  98. package/src/hubs/basehub.ts +18 -0
  99. package/src/hubs/lpf2hub.ts +12 -5
  100. package/src/portoutputcommand.ts +37 -0
  101. package/src/portoutputsleep.ts +11 -0
  102. package/src/utils.ts +14 -19
  103. package/tsconfig.tsbuildinfo +1 -1
  104. package/webpack.config.cjs +35 -0
  105. package/dist/node/color.d.ts +0 -6
  106. package/dist/node/color.js +0 -15
  107. package/dist/node/color.js.map +0 -1
  108. package/dist/node/commands.d.ts +0 -299
  109. package/dist/node/commands.js +0 -672
  110. package/dist/node/commands.js.map +0 -1
  111. package/dist/node/connection.d.ts +0 -187
  112. package/dist/node/connection.js +0 -478
  113. package/dist/node/connection.js.map +0 -1
  114. package/dist/node/consts.d.ts +0 -644
  115. package/dist/node/consts.js +0 -675
  116. package/dist/node/consts.js.map +0 -1
  117. package/dist/node/devices/absolutemotor.d.ts +0 -43
  118. package/dist/node/devices/absolutemotor.js +0 -118
  119. package/dist/node/devices/absolutemotor.js.map +0 -1
  120. package/dist/node/devices/basicmotor.d.ts +0 -40
  121. package/dist/node/devices/basicmotor.js +0 -61
  122. package/dist/node/devices/basicmotor.js.map +0 -1
  123. package/dist/node/devices/colordistancesensor.d.ts +0 -79
  124. package/dist/node/devices/colordistancesensor.js +0 -284
  125. package/dist/node/devices/colordistancesensor.js.map +0 -1
  126. package/dist/node/devices/currentsensor.d.ts +0 -16
  127. package/dist/node/devices/currentsensor.js +0 -55
  128. package/dist/node/devices/currentsensor.js.map +0 -1
  129. package/dist/node/devices/device.d.ts +0 -71
  130. package/dist/node/devices/device.js +0 -162
  131. package/dist/node/devices/device.js.map +0 -1
  132. package/dist/node/devices/duplotrainbasecolorsensor.d.ts +0 -19
  133. package/dist/node/devices/duplotrainbasecolorsensor.js +0 -77
  134. package/dist/node/devices/duplotrainbasecolorsensor.js.map +0 -1
  135. package/dist/node/devices/duplotrainbasemotor.d.ts +0 -9
  136. package/dist/node/devices/duplotrainbasemotor.js +0 -12
  137. package/dist/node/devices/duplotrainbasemotor.js.map +0 -1
  138. package/dist/node/devices/duplotrainbasespeaker.d.ts +0 -28
  139. package/dist/node/devices/duplotrainbasespeaker.js +0 -40
  140. package/dist/node/devices/duplotrainbasespeaker.js.map +0 -1
  141. package/dist/node/devices/duplotrainbasespeedometer.d.ts +0 -16
  142. package/dist/node/devices/duplotrainbasespeedometer.js +0 -34
  143. package/dist/node/devices/duplotrainbasespeedometer.js.map +0 -1
  144. package/dist/node/devices/hubled.d.ts +0 -29
  145. package/dist/node/devices/hubled.js +0 -60
  146. package/dist/node/devices/hubled.js.map +0 -1
  147. package/dist/node/devices/index.d.ts +0 -14
  148. package/dist/node/devices/index.js +0 -154
  149. package/dist/node/devices/index.js.map +0 -1
  150. package/dist/node/devices/led.d.ts +0 -140
  151. package/dist/node/devices/led.js +0 -295
  152. package/dist/node/devices/led.js.map +0 -1
  153. package/dist/node/devices/light.d.ts +0 -25
  154. package/dist/node/devices/light.js +0 -46
  155. package/dist/node/devices/light.js.map +0 -1
  156. package/dist/node/devices/marioaccelerometer.d.ts +0 -17
  157. package/dist/node/devices/marioaccelerometer.js +0 -50
  158. package/dist/node/devices/marioaccelerometer.js.map +0 -1
  159. package/dist/node/devices/mariobarcodesensor.d.ts +0 -17
  160. package/dist/node/devices/mariobarcodesensor.js +0 -58
  161. package/dist/node/devices/mariobarcodesensor.js.map +0 -1
  162. package/dist/node/devices/mariopantssensor.d.ts +0 -16
  163. package/dist/node/devices/mariopantssensor.js +0 -34
  164. package/dist/node/devices/mariopantssensor.js.map +0 -1
  165. package/dist/node/devices/mediumlinearmotor.d.ts +0 -9
  166. package/dist/node/devices/mediumlinearmotor.js +0 -12
  167. package/dist/node/devices/mediumlinearmotor.js.map +0 -1
  168. package/dist/node/devices/motionsensor.d.ts +0 -16
  169. package/dist/node/devices/motionsensor.js +0 -38
  170. package/dist/node/devices/motionsensor.js.map +0 -1
  171. package/dist/node/devices/motor.d.ts +0 -182
  172. package/dist/node/devices/motor.js +0 -367
  173. package/dist/node/devices/motor.js.map +0 -1
  174. package/dist/node/devices/movehubmediumlinearmotor.d.ts +0 -9
  175. package/dist/node/devices/movehubmediumlinearmotor.js +0 -12
  176. package/dist/node/devices/movehubmediumlinearmotor.js.map +0 -1
  177. package/dist/node/devices/movehubtiltsensor.d.ts +0 -16
  178. package/dist/node/devices/movehubtiltsensor.js +0 -36
  179. package/dist/node/devices/movehubtiltsensor.js.map +0 -1
  180. package/dist/node/devices/piezobuzzer.d.ts +0 -17
  181. package/dist/node/devices/piezobuzzer.js +0 -28
  182. package/dist/node/devices/piezobuzzer.js.map +0 -1
  183. package/dist/node/devices/remotecontrolbutton.d.ts +0 -19
  184. package/dist/node/devices/remotecontrolbutton.js +0 -40
  185. package/dist/node/devices/remotecontrolbutton.js.map +0 -1
  186. package/dist/node/devices/sensor.d.ts +0 -305
  187. package/dist/node/devices/sensor.js +0 -662
  188. package/dist/node/devices/sensor.js.map +0 -1
  189. package/dist/node/devices/simplemediumlinearmotor.d.ts +0 -9
  190. package/dist/node/devices/simplemediumlinearmotor.js +0 -12
  191. package/dist/node/devices/simplemediumlinearmotor.js.map +0 -1
  192. package/dist/node/devices/tachomotor.d.ts +0 -70
  193. package/dist/node/devices/tachomotor.js +0 -167
  194. package/dist/node/devices/tachomotor.js.map +0 -1
  195. package/dist/node/devices/technic3x3colorlightmatrix.d.ts +0 -22
  196. package/dist/node/devices/technic3x3colorlightmatrix.js +0 -54
  197. package/dist/node/devices/technic3x3colorlightmatrix.js.map +0 -1
  198. package/dist/node/devices/techniccolorsensor.d.ts +0 -27
  199. package/dist/node/devices/techniccolorsensor.js +0 -72
  200. package/dist/node/devices/techniccolorsensor.js.map +0 -1
  201. package/dist/node/devices/technicdistancesensor.d.ts +0 -27
  202. package/dist/node/devices/technicdistancesensor.js +0 -58
  203. package/dist/node/devices/technicdistancesensor.js.map +0 -1
  204. package/dist/node/devices/technicforcesensor.d.ts +0 -18
  205. package/dist/node/devices/technicforcesensor.js +0 -58
  206. package/dist/node/devices/technicforcesensor.js.map +0 -1
  207. package/dist/node/devices/techniclargeangularmotor.d.ts +0 -12
  208. package/dist/node/devices/techniclargeangularmotor.js +0 -12
  209. package/dist/node/devices/techniclargeangularmotor.js.map +0 -1
  210. package/dist/node/devices/techniclargelinearmotor.d.ts +0 -9
  211. package/dist/node/devices/techniclargelinearmotor.js +0 -12
  212. package/dist/node/devices/techniclargelinearmotor.js.map +0 -1
  213. package/dist/node/devices/technicmediumangularmotor.d.ts +0 -12
  214. package/dist/node/devices/technicmediumangularmotor.js +0 -12
  215. package/dist/node/devices/technicmediumangularmotor.js.map +0 -1
  216. package/dist/node/devices/technicmediumhubaccelerometersensor.d.ts +0 -16
  217. package/dist/node/devices/technicmediumhubaccelerometersensor.js +0 -38
  218. package/dist/node/devices/technicmediumhubaccelerometersensor.js.map +0 -1
  219. package/dist/node/devices/technicmediumhubgyrosensor.d.ts +0 -16
  220. package/dist/node/devices/technicmediumhubgyrosensor.js +0 -38
  221. package/dist/node/devices/technicmediumhubgyrosensor.js.map +0 -1
  222. package/dist/node/devices/technicmediumhubtiltsensor.d.ts +0 -40
  223. package/dist/node/devices/technicmediumhubtiltsensor.js +0 -106
  224. package/dist/node/devices/technicmediumhubtiltsensor.js.map +0 -1
  225. package/dist/node/devices/technicsmallangularmotor.d.ts +0 -12
  226. package/dist/node/devices/technicsmallangularmotor.js +0 -12
  227. package/dist/node/devices/technicsmallangularmotor.js.map +0 -1
  228. package/dist/node/devices/technicxlargelinearmotor.d.ts +0 -9
  229. package/dist/node/devices/technicxlargelinearmotor.js +0 -12
  230. package/dist/node/devices/technicxlargelinearmotor.js.map +0 -1
  231. package/dist/node/devices/tiltsensor.d.ts +0 -16
  232. package/dist/node/devices/tiltsensor.js +0 -36
  233. package/dist/node/devices/tiltsensor.js.map +0 -1
  234. package/dist/node/devices/trainmotor.d.ts +0 -9
  235. package/dist/node/devices/trainmotor.js +0 -12
  236. package/dist/node/devices/trainmotor.js.map +0 -1
  237. package/dist/node/devices/voltagesensor.d.ts +0 -16
  238. package/dist/node/devices/voltagesensor.js +0 -59
  239. package/dist/node/devices/voltagesensor.js.map +0 -1
  240. package/dist/node/hub.d.ts +0 -291
  241. package/dist/node/hub.js +0 -778
  242. package/dist/node/hub.js.map +0 -1
  243. package/dist/node/hubs/basehub.d.ts +0 -162
  244. package/dist/node/hubs/basehub.js +0 -392
  245. package/dist/node/hubs/basehub.js.map +0 -1
  246. package/dist/node/hubs/duplotrainbase.d.ts +0 -17
  247. package/dist/node/hubs/duplotrainbase.js +0 -35
  248. package/dist/node/hubs/duplotrainbase.js.map +0 -1
  249. package/dist/node/hubs/hub.d.ts +0 -19
  250. package/dist/node/hubs/hub.js +0 -44
  251. package/dist/node/hubs/hub.js.map +0 -1
  252. package/dist/node/hubs/lpf2hub.d.ts +0 -48
  253. package/dist/node/hubs/lpf2hub.js +0 -314
  254. package/dist/node/hubs/lpf2hub.js.map +0 -1
  255. package/dist/node/hubs/mario.d.ts +0 -17
  256. package/dist/node/hubs/mario.js +0 -31
  257. package/dist/node/hubs/mario.js.map +0 -1
  258. package/dist/node/hubs/movehub.d.ts +0 -18
  259. package/dist/node/hubs/movehub.js +0 -46
  260. package/dist/node/hubs/movehub.js.map +0 -1
  261. package/dist/node/hubs/remotecontrol.d.ts +0 -17
  262. package/dist/node/hubs/remotecontrol.js +0 -37
  263. package/dist/node/hubs/remotecontrol.js.map +0 -1
  264. package/dist/node/hubs/technicmediumhub.d.ts +0 -17
  265. package/dist/node/hubs/technicmediumhub.js +0 -42
  266. package/dist/node/hubs/technicmediumhub.js.map +0 -1
  267. package/dist/node/hubs/technicsmallhub.d.ts +0 -18
  268. package/dist/node/hubs/technicsmallhub.js +0 -41
  269. package/dist/node/hubs/technicsmallhub.js.map +0 -1
  270. package/dist/node/hubs/wedo2smarthub.d.ts +0 -40
  271. package/dist/node/hubs/wedo2smarthub.js +0 -188
  272. package/dist/node/hubs/wedo2smarthub.js.map +0 -1
  273. package/dist/node/index-browser.d.ts +0 -1
  274. package/dist/node/index-browser.js +0 -96
  275. package/dist/node/index-browser.js.map +0 -1
  276. package/dist/node/index-node.d.ts +0 -49
  277. package/dist/node/index-node.js +0 -50
  278. package/dist/node/index-node.js.map +0 -1
  279. package/dist/node/index.d.ts +0 -31
  280. package/dist/node/index.js +0 -93
  281. package/dist/node/index.js.map +0 -1
  282. package/dist/node/index.mjs +0 -0
  283. package/dist/node/interfaces.d.ts +0 -23
  284. package/dist/node/interfaces.js +0 -2
  285. package/dist/node/interfaces.js.map +0 -1
  286. package/dist/node/nobleabstraction.d.ts +0 -26
  287. package/dist/node/nobleabstraction.js +0 -123
  288. package/dist/node/nobleabstraction.js.map +0 -1
  289. package/dist/node/poweredup-browser.d.ts +0 -50
  290. package/dist/node/poweredup-browser.js +0 -216
  291. package/dist/node/poweredup-browser.js.map +0 -1
  292. package/dist/node/poweredup-node.d.ts +0 -54
  293. package/dist/node/poweredup-node.js +0 -173
  294. package/dist/node/poweredup-node.js.map +0 -1
  295. package/dist/node/poweredup.d.ts +0 -83
  296. package/dist/node/poweredup.js +0 -542
  297. package/dist/node/poweredup.js.map +0 -1
  298. package/dist/node/protocol-wedo.d.ts +0 -158
  299. package/dist/node/protocol-wedo.js +0 -342
  300. package/dist/node/protocol-wedo.js.map +0 -1
  301. package/dist/node/protocol.d.ts +0 -340
  302. package/dist/node/protocol.js +0 -730
  303. package/dist/node/protocol.js.map +0 -1
  304. package/dist/node/types.d.ts +0 -408
  305. package/dist/node/types.js +0 -291
  306. package/dist/node/types.js.map +0 -1
  307. package/dist/node/utils.d.ts +0 -12
  308. package/dist/node/utils.js +0 -90
  309. package/dist/node/utils.js.map +0 -1
  310. package/dist/node/webbleabstraction.d.ts +0 -26
  311. package/dist/node/webbleabstraction.js +0 -104
  312. package/dist/node/webbleabstraction.js.map +0 -1
  313. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -12,33 +12,27 @@ export class Light extends Device {
12
12
  /**
13
13
  * Set the light brightness.
14
14
  * @param {number} brightness Brightness value between 0-100 (0 is off)
15
- * @returns {Promise} Resolved upon successful completion of command.
15
+ * @param {number} brightness Brightness value between 0-100 (0 is off)
16
+ * @param {boolean} [interrupt=false] If true, previous commands are discarded.
17
+ * @returns {Promise<CommandFeedback>} Resolved upon completion of command.
16
18
  */
17
- setBrightness(brightness, interrupt = true) {
18
- if (interrupt) {
19
- this.cancelEventTimer();
20
- }
21
- return new Promise((resolve) => {
22
- this.writeDirect(0x00, Buffer.from([brightness]));
23
- return resolve();
24
- });
19
+ setBrightness(brightness, interrupt = false) {
20
+ return this.writeDirect(0x00, Buffer.from([brightness]), interrupt);
25
21
  }
26
22
  /**
27
23
  * Ramp the light brightness.
28
24
  * @param {number} fromBrightness Brightness value between 0-100 (0 is off)
29
25
  * @param {number} toBrightness Brightness value between 0-100 (0 is off)
30
26
  * @param {number} time How long the ramp should last (in milliseconds).
31
- * @returns {Promise} Resolved upon successful completion of command.
27
+ * @returns {Promise<CommandFeedback>} Resolved upon completion of command.
32
28
  */
33
29
  rampBrightness(fromBrightness, toBrightness, time) {
34
- this.cancelEventTimer();
35
- return new Promise((resolve) => {
36
- calculateRamp(this, fromBrightness, toBrightness, time)
37
- .on("changePower", (power) => {
38
- this.setBrightness(power, false);
39
- })
40
- .on("finished", resolve);
30
+ const powerValues = calculateRamp(fromBrightness, toBrightness, time);
31
+ powerValues.forEach(value => {
32
+ this.setBrightness(value);
33
+ this.addPortOutputSleep(Math.round(time / powerValues.length));
41
34
  });
35
+ return this.setBrightness(toBrightness);
42
36
  }
43
37
  }
44
38
  //# sourceMappingURL=light.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"light.js","sourceRoot":"","sources":["../../src/devices/light.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAIrC,OAAO,KAAK,MAAM,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C;;;GAGG;AACH,MAAM,OAAO,KAAM,SAAQ,MAAM;IAG7B,YAAa,GAAqB,EAAE,MAAc;QAC9C,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC;IAGD;;;;OAIG;IACI,aAAa,CAAE,UAAkB,EAAE,YAAqB,IAAI;QAC/D,IAAI,SAAS,EAAE,CAAC;YACZ,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC5B,CAAC;QACD,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YACjC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAClD,OAAO,OAAO,EAAE,CAAC;QACrB,CAAC,CAAC,CAAC;IACP,CAAC;IAGD;;;;;;OAMG;IACI,cAAc,CAAE,cAAsB,EAAE,YAAoB,EAAE,IAAY;QAC7E,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC3B,aAAa,CAAC,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,IAAI,CAAC;iBACtD,EAAE,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE;gBACzB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACrC,CAAC,CAAC;iBACD,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACP,CAAC;CAGJ"}
1
+ {"version":3,"file":"light.js","sourceRoot":"","sources":["../../src/devices/light.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAIrC,OAAO,KAAK,MAAM,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C;;;GAGG;AACH,MAAM,OAAO,KAAM,SAAQ,MAAM;IAG7B,YAAa,GAAqB,EAAE,MAAc;QAC9C,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC;IAGD;;;;;;OAMG;IACI,aAAa,CAAE,UAAkB,EAAE,YAAqB,KAAK;QAChE,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IACxE,CAAC;IAGD;;;;;;OAMG;IACI,cAAc,CAAE,cAAsB,EAAE,YAAoB,EAAE,IAAY;QAC7E,MAAM,WAAW,GAAG,aAAa,CAAC,cAAc,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;QACtE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACxB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC1B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;IAC5C,CAAC;CAEJ"}
@@ -1,5 +1,6 @@
1
1
  import { Device } from "./device.js";
2
2
  import { IDeviceInterface } from "../interfaces.js";
3
+ import * as Consts from "../consts.js";
3
4
  /**
4
5
  * @class PiezoBuzzer
5
6
  * @extends Device
@@ -10,8 +11,8 @@ export declare class PiezoBuzzer extends Device {
10
11
  * Play a tone on the Hub's in-built buzzer
11
12
  * @param {number} frequency
12
13
  * @param {number} time How long the tone should play for (in milliseconds).
13
- * @returns {Promise} Resolved upon successful completion of command (ie. once the tone has finished playing).
14
+ * @returns {Promise<CommandFeedback>} Resolved upon completion of command (i.e. once the tone has finished playing).
14
15
  */
15
- playTone(frequency: number, time: number): Promise<unknown>;
16
+ playTone(frequency: number, time: number): Promise<Consts.CommandFeedback>;
16
17
  }
17
18
  //# sourceMappingURL=piezobuzzer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"piezobuzzer.d.ts","sourceRoot":"","sources":["../../src/devices/piezobuzzer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAIpD;;;GAGG;AACH,qBAAa,WAAY,SAAQ,MAAM;gBAGtB,GAAG,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM;IAKlD;;;;;OAKG;IACI,QAAQ,CAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;CAWnD"}
1
+ {"version":3,"file":"piezobuzzer.d.ts","sourceRoot":"","sources":["../../src/devices/piezobuzzer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,KAAK,MAAM,MAAM,cAAc,CAAC;AAEvC;;;GAGG;AACH,qBAAa,WAAY,SAAQ,MAAM;gBAGtB,GAAG,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM;IAKlD;;;;;OAKG;IACI,QAAQ,CAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;CAWnD"}
@@ -12,7 +12,7 @@ export class PiezoBuzzer extends Device {
12
12
  * Play a tone on the Hub's in-built buzzer
13
13
  * @param {number} frequency
14
14
  * @param {number} time How long the tone should play for (in milliseconds).
15
- * @returns {Promise} Resolved upon successful completion of command (ie. once the tone has finished playing).
15
+ * @returns {Promise<CommandFeedback>} Resolved upon completion of command (i.e. once the tone has finished playing).
16
16
  */
17
17
  playTone(frequency, time) {
18
18
  return new Promise((resolve) => {
@@ -20,7 +20,7 @@ export class PiezoBuzzer extends Device {
20
20
  data.writeUInt16LE(frequency, 3);
21
21
  data.writeUInt16LE(time, 5);
22
22
  this.send(data, Consts.BLECharacteristic.WEDO2_MOTOR_VALUE_WRITE);
23
- global.setTimeout(resolve, time);
23
+ global.setTimeout(() => { return resolve(Consts.CommandFeedback.FEEDBACK_DISABLED); }, time);
24
24
  });
25
25
  }
26
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"piezobuzzer.js","sourceRoot":"","sources":["../../src/devices/piezobuzzer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAIrC,OAAO,KAAK,MAAM,MAAM,cAAc,CAAC;AAEvC;;;GAGG;AACH,MAAM,OAAO,WAAY,SAAQ,MAAM;IAGnC,YAAa,GAAqB,EAAE,MAAc;QAC9C,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IAC3D,CAAC;IAGD;;;;;OAKG;IACI,QAAQ,CAAE,SAAiB,EAAE,IAAY;QAC5C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC3B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;YACrE,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;YACjC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,CAAC;YAClE,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;IACP,CAAC;CAGJ"}
1
+ {"version":3,"file":"piezobuzzer.js","sourceRoot":"","sources":["../../src/devices/piezobuzzer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAIrC,OAAO,KAAK,MAAM,MAAM,cAAc,CAAC;AAEvC;;;GAGG;AACH,MAAM,OAAO,WAAY,SAAQ,MAAM;IAGnC,YAAa,GAAqB,EAAE,MAAc;QAC9C,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IAC3D,CAAC;IAGD;;;;;OAKG;IACI,QAAQ,CAAE,SAAiB,EAAE,IAAY;QAC5C,OAAO,IAAI,OAAO,CAAyB,CAAC,OAAO,EAAE,EAAE;YACnD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;YACrE,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;YACjC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,CAAC;YAClE,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,GAAE,OAAO,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAA,CAAA,CAAC,EAAE,IAAI,CAAC,CAAC;QAC9F,CAAC,CAAC,CAAC;IACP,CAAC;CAGJ"}
@@ -31,29 +31,35 @@ export declare class TachoMotor extends BasicMotor {
31
31
  /**
32
32
  * Set the global acceleration time
33
33
  * @param {number} time How long acceleration should last (in milliseconds).
34
- * @returns {Promise} Resolved upon successful completion of command (ie. once the motor is finished).
34
+ * @param {number} profile 0 by default
35
+ * @param {boolean} [interrupt=false] If true, previous commands are discarded.
36
+ * @returns {Promise<CommandFeedback>} Resolved upon completion of command (i.e. once the motor is finished).
35
37
  */
36
- setAccelerationTime(time: number, profile?: number): void;
38
+ setAccelerationTime(time: number, profile?: number, interrupt?: boolean): Promise<Consts.CommandFeedback> | undefined;
37
39
  /**
38
40
  * Set the global deceleration time
39
41
  * @param {number} time How long deceleration should last (in milliseconds).
40
- * @returns {Promise} Resolved upon successful completion of command (ie. once the motor is finished).
42
+ * @param {number} profile 0 by default
43
+ * @param {boolean} [interrupt=false] If true, previous commands are discarded.
44
+ * @returns {Promise<CommandFeedback>} Resolved upon completion of command (i.e. once the motor is finished).
41
45
  */
42
- setDecelerationTime(time: number, profile?: number): void;
46
+ setDecelerationTime(time: number, profile?: number, interrupt?: boolean): Promise<Consts.CommandFeedback> | undefined;
43
47
  /**
44
48
  * Set the motor speed.
45
49
  * @param {number} speed For forward, a value between 1 - 100 should be set. For reverse, a value between -1 to -100. Stop is 0.
46
50
  * @param {number} time How long the motor should run for (in milliseconds).
47
- * @returns {Promise} Resolved upon successful issuance of the command.
51
+ * @param {boolean} [interrupt=false] If true, previous commands are discarded.
52
+ * @returns {Promise<CommandFeedback>} Resolved upon completion of command (i.e. once the motor is finished).
48
53
  */
49
- setSpeed(speed: [number, number] | number, time: number | undefined): Promise<void>;
54
+ setSpeed(speed: [number, number] | number, time: number | undefined, interrupt?: boolean): Promise<Consts.CommandFeedback> | undefined;
50
55
  /**
51
56
  * Rotate a motor by a given amount of degrees.
52
57
  * @param {number} degrees How much the motor should be rotated (in degrees).
53
58
  * @param {number} [speed=100] For forward, a value between 1 - 100 should be set. For reverse, a value between -1 to -100.
54
- * @returns {Promise} Resolved upon successful completion of command (ie. once the motor is finished).
59
+ * @param {boolean} [interrupt=false] If true, previous commands are discarded.
60
+ * @returns {Promise<CommandFeedback>} Resolved upon completion of command (i.e. once the motor is finished).
55
61
  */
56
- rotateByDegrees(degrees: number, speed: [number, number] | number): Promise<void>;
62
+ rotateByDegrees(degrees: number, speed: [number, number] | number, interrupt?: boolean): Promise<Consts.CommandFeedback> | undefined;
57
63
  protected useProfile(): number;
58
64
  }
59
65
  export declare enum Mode {
@@ -1 +1 @@
1
- {"version":3,"file":"tachomotor.d.ts","sourceRoot":"","sources":["../../src/devices/tachomotor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,KAAK,MAAM,MAAM,cAAc,CAAC;AAGvC;;;GAGG;AACH,qBAAa,UAAW,SAAQ,UAAU;IAEtC,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC,YAAY,CAA6B;IACvE,SAAS,CAAC,SAAS,EAAE,MAAM,CAAO;IAC3B,sBAAsB,EAAE,OAAO,CAAQ;IACvC,sBAAsB,EAAE,OAAO,CAAQ;gBAEjC,GAAG,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE;QAAC,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;KAAM,EAAE,IAAI,GAAE,MAAM,CAAC,UAAsC;IAIzI,OAAO,CAAE,OAAO,EAAE,MAAM;IAkB/B;;;;;OAKG;IACI,eAAe,CAAE,KAAK,EAAE,MAAM,CAAC,YAAY;IAKlD;;;;;OAKG;IACI,WAAW,CAAE,QAAQ,EAAE,MAAM;IAKpC;;;;OAIG;IACI,mBAAmB,CAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,MAAa;IAOhE;;;;OAIG;IACI,mBAAmB,CAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,MAAa;IAOhE;;;;;OAKG;IACI,QAAQ,CAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS;IAkC3E;;;;;OAKG;IACI,eAAe,CAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM;IA2BzE,SAAS,CAAC,UAAU;CAYvB;AAED,oBAAY,IAAI;IACZ,QAAQ,IAAO;CAClB;AAED,eAAO,MAAM,OAAO,EAAE;IAAC,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAE7C,CAAC"}
1
+ {"version":3,"file":"tachomotor.d.ts","sourceRoot":"","sources":["../../src/devices/tachomotor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,KAAK,MAAM,MAAM,cAAc,CAAC;AAGvC;;;GAGG;AACH,qBAAa,UAAW,SAAQ,UAAU;IAEtC,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC,YAAY,CAA6B;IACvE,SAAS,CAAC,SAAS,EAAE,MAAM,CAAO;IAC3B,sBAAsB,EAAE,OAAO,CAAQ;IACvC,sBAAsB,EAAE,OAAO,CAAQ;gBAEjC,GAAG,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE;QAAC,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;KAAM,EAAE,IAAI,GAAE,MAAM,CAAC,UAAsC;IAIzI,OAAO,CAAE,OAAO,EAAE,MAAM;IAkB/B;;;;;OAKG;IACI,eAAe,CAAE,KAAK,EAAE,MAAM,CAAC,YAAY;IAKlD;;;;;OAKG;IACI,WAAW,CAAE,QAAQ,EAAE,MAAM;IAKpC;;;;;;OAMG;IACI,mBAAmB,CAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,MAAa,EAAE,SAAS,GAAE,OAAe;IAO5F;;;;;;OAMG;IACI,mBAAmB,CAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,MAAa,EAAE,SAAS,GAAE,OAAc;IAO3F;;;;;;OAMG;IACI,QAAQ,CAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,GAAE,OAAe;IA4BvG;;;;;;OAMG;IACI,eAAe,CAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE,SAAS,GAAE,OAAe;IAqBrG,SAAS,CAAC,UAAU;CAYvB;AAED,oBAAY,IAAI;IACZ,QAAQ,IAAO;CAClB;AAED,eAAO,MAAM,OAAO,EAAE;IAAC,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAE7C,CAAC"}
@@ -49,96 +49,90 @@ export class TachoMotor extends BasicMotor {
49
49
  /**
50
50
  * Set the global acceleration time
51
51
  * @param {number} time How long acceleration should last (in milliseconds).
52
- * @returns {Promise} Resolved upon successful completion of command (ie. once the motor is finished).
52
+ * @param {number} profile 0 by default
53
+ * @param {boolean} [interrupt=false] If true, previous commands are discarded.
54
+ * @returns {Promise<CommandFeedback>} Resolved upon completion of command (i.e. once the motor is finished).
53
55
  */
54
- setAccelerationTime(time, profile = 0x00) {
55
- const message = Buffer.from([0x81, this.portId, 0x11, 0x05, 0x00, 0x00, profile]);
56
- message.writeUInt16LE(time, 4);
57
- this.send(message);
56
+ setAccelerationTime(time, profile = 0x00, interrupt = false) {
57
+ const message = Buffer.from([0x05, 0x00, 0x00, profile]);
58
+ message.writeUInt16LE(time, 1);
59
+ return this.sendPortOutputCommand(message, interrupt);
58
60
  }
59
61
  /**
60
62
  * Set the global deceleration time
61
63
  * @param {number} time How long deceleration should last (in milliseconds).
62
- * @returns {Promise} Resolved upon successful completion of command (ie. once the motor is finished).
64
+ * @param {number} profile 0 by default
65
+ * @param {boolean} [interrupt=false] If true, previous commands are discarded.
66
+ * @returns {Promise<CommandFeedback>} Resolved upon completion of command (i.e. once the motor is finished).
63
67
  */
64
- setDecelerationTime(time, profile = 0x00) {
65
- const message = Buffer.from([0x81, this.portId, 0x11, 0x06, 0x00, 0x00, profile]);
66
- message.writeUInt16LE(time, 4);
67
- this.send(message);
68
+ setDecelerationTime(time, profile = 0x00, interrupt = true) {
69
+ const message = Buffer.from([0x06, 0x00, 0x00, profile]);
70
+ message.writeUInt16LE(time, 1);
71
+ return this.sendPortOutputCommand(message, interrupt);
68
72
  }
69
73
  /**
70
74
  * Set the motor speed.
71
75
  * @param {number} speed For forward, a value between 1 - 100 should be set. For reverse, a value between -1 to -100. Stop is 0.
72
76
  * @param {number} time How long the motor should run for (in milliseconds).
73
- * @returns {Promise} Resolved upon successful issuance of the command.
77
+ * @param {boolean} [interrupt=false] If true, previous commands are discarded.
78
+ * @returns {Promise<CommandFeedback>} Resolved upon completion of command (i.e. once the motor is finished).
74
79
  */
75
- setSpeed(speed, time) {
80
+ setSpeed(speed, time, interrupt = false) {
76
81
  if (!this.isVirtualPort && speed instanceof Array) {
77
82
  throw new Error("Only virtual ports can accept multiple speeds");
78
83
  }
79
84
  if (this.isWeDo2SmartHub) {
80
85
  throw new Error("Motor speed is not available on the WeDo 2.0 Smart Hub");
81
86
  }
82
- this.cancelEventTimer();
83
- return new Promise((resolve) => {
84
- if (speed === undefined || speed === null) {
85
- speed = 100;
87
+ if (speed === undefined || speed === null) {
88
+ speed = 100;
89
+ }
90
+ let message;
91
+ if (time !== undefined) {
92
+ if (speed instanceof Array) {
93
+ message = Buffer.from([0x0a, 0x00, 0x00, mapSpeed(speed[0]), mapSpeed(speed[1]), this._maxPower, this._brakeStyle, this.useProfile()]);
94
+ }
95
+ else {
96
+ message = Buffer.from([0x09, 0x00, 0x00, mapSpeed(speed), this._maxPower, this._brakeStyle, this.useProfile()]);
86
97
  }
87
- let message;
88
- if (time !== undefined) {
89
- if (speed instanceof Array) {
90
- message = Buffer.from([0x81, this.portId, 0x11, 0x0a, 0x00, 0x00, mapSpeed(speed[0]), mapSpeed(speed[1]), this._maxPower, this._brakeStyle, this.useProfile()]);
91
- }
92
- else {
93
- message = Buffer.from([0x81, this.portId, 0x11, 0x09, 0x00, 0x00, mapSpeed(speed), this._maxPower, this._brakeStyle, this.useProfile()]);
94
- }
95
- message.writeUInt16LE(time, 4);
98
+ message.writeUInt16LE(time, 1);
99
+ }
100
+ else {
101
+ if (speed instanceof Array) {
102
+ message = Buffer.from([0x08, mapSpeed(speed[0]), mapSpeed(speed[1]), this._maxPower, this.useProfile()]);
96
103
  }
97
104
  else {
98
- if (speed instanceof Array) {
99
- message = Buffer.from([0x81, this.portId, 0x11, 0x08, mapSpeed(speed[0]), mapSpeed(speed[1]), this._maxPower, this.useProfile()]);
100
- }
101
- else {
102
- message = Buffer.from([0x81, this.portId, 0x11, 0x07, mapSpeed(speed), this._maxPower, this.useProfile()]);
103
- }
105
+ message = Buffer.from([0x07, mapSpeed(speed), this._maxPower, this.useProfile()]);
104
106
  }
105
- this.send(message);
106
- this._finishedCallbacks.push(() => {
107
- return resolve();
108
- });
109
- });
107
+ }
108
+ return this.sendPortOutputCommand(message, interrupt);
110
109
  }
111
110
  /**
112
111
  * Rotate a motor by a given amount of degrees.
113
112
  * @param {number} degrees How much the motor should be rotated (in degrees).
114
113
  * @param {number} [speed=100] For forward, a value between 1 - 100 should be set. For reverse, a value between -1 to -100.
115
- * @returns {Promise} Resolved upon successful completion of command (ie. once the motor is finished).
114
+ * @param {boolean} [interrupt=false] If true, previous commands are discarded.
115
+ * @returns {Promise<CommandFeedback>} Resolved upon completion of command (i.e. once the motor is finished).
116
116
  */
117
- rotateByDegrees(degrees, speed) {
117
+ rotateByDegrees(degrees, speed, interrupt = false) {
118
118
  if (!this.isVirtualPort && speed instanceof Array) {
119
119
  throw new Error("Only virtual ports can accept multiple speeds");
120
120
  }
121
121
  if (this.isWeDo2SmartHub) {
122
122
  throw new Error("Rotation is not available on the WeDo 2.0 Smart Hub");
123
123
  }
124
- this.cancelEventTimer();
125
- return new Promise((resolve) => {
126
- if (speed === undefined || speed === null) {
127
- speed = 100;
128
- }
129
- let message;
130
- if (speed instanceof Array) {
131
- message = Buffer.from([0x81, this.portId, 0x11, 0x0c, 0x00, 0x00, 0x00, 0x00, mapSpeed(speed[0]), mapSpeed(speed[1]), this._maxPower, this._brakeStyle, this.useProfile()]);
132
- }
133
- else {
134
- message = Buffer.from([0x81, this.portId, 0x11, 0x0b, 0x00, 0x00, 0x00, 0x00, mapSpeed(speed), this._maxPower, this._brakeStyle, this.useProfile()]);
135
- }
136
- message.writeUInt32LE(degrees, 4);
137
- this.send(message);
138
- this._finishedCallbacks.push(() => {
139
- return resolve();
140
- });
141
- });
124
+ if (speed === undefined || speed === null) {
125
+ speed = 100;
126
+ }
127
+ let message;
128
+ if (speed instanceof Array) {
129
+ message = Buffer.from([0x0c, 0x00, 0x00, 0x00, 0x00, mapSpeed(speed[0]), mapSpeed(speed[1]), this._maxPower, this._brakeStyle, this.useProfile()]);
130
+ }
131
+ else {
132
+ message = Buffer.from([0x0b, 0x00, 0x00, 0x00, 0x00, mapSpeed(speed), this._maxPower, this._brakeStyle, this.useProfile()]);
133
+ }
134
+ message.writeUInt32LE(degrees, 1);
135
+ return this.sendPortOutputCommand(message, interrupt);
142
136
  }
143
137
  useProfile() {
144
138
  let value = 0x00;
@@ -1 +1 @@
1
- {"version":3,"file":"tachomotor.js","sourceRoot":"","sources":["../../src/devices/tachomotor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tachomotor.js","sourceRoot":"","sources":["../../src/devices/tachomotor.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { Device } from "./device.js";
2
2
  import { IDeviceInterface } from "../interfaces.js";
3
+ import * as Consts from "../consts.js";
3
4
  /**
4
5
  * @class Technic3x3ColorLightMatrix
5
6
  * @extends Device
@@ -9,9 +10,9 @@ export declare class Technic3x3ColorLightMatrix extends Device {
9
10
  /**
10
11
  * Set the LED matrix, one color per LED
11
12
  * @param {Color[] | Color} colors Array of 9 colors, 9 Color objects, or a single color
12
- * @returns {Promise} Resolved upon successful issuance of the command.
13
+ * @returns {Promise<CommandFeedback>} Resolved upon completion of command.
13
14
  */
14
- setMatrix(colors: number[] | number): Promise<void>;
15
+ setMatrix(colors: number[] | number): Promise<Consts.CommandFeedback> | undefined;
15
16
  }
16
17
  export declare enum Mode {
17
18
  LEV_0 = 0,
@@ -1 +1 @@
1
- {"version":3,"file":"technic3x3colorlightmatrix.d.ts","sourceRoot":"","sources":["../../src/devices/technic3x3colorlightmatrix.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAIpD;;;GAGG;AACH,qBAAa,0BAA2B,SAAQ,MAAM;gBAGrC,GAAG,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM;IAKlD;;;;OAIG;IACI,SAAS,CAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM;CA8B9C;AAED,oBAAY,IAAI;IACZ,KAAK,IAAO;IACZ,KAAK,IAAO;IACZ,KAAK,IAAO;IACZ,KAAK,IAAO;CACf"}
1
+ {"version":3,"file":"technic3x3colorlightmatrix.d.ts","sourceRoot":"","sources":["../../src/devices/technic3x3colorlightmatrix.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,KAAK,MAAM,MAAM,cAAc,CAAC;AAEvC;;;GAGG;AACH,qBAAa,0BAA2B,SAAQ,MAAM;gBAGrC,GAAG,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM;IAKlD;;;;OAIG;IACI,SAAS,CAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM;CA2B9C;AAED,oBAAY,IAAI;IACZ,KAAK,IAAO;IACZ,KAAK,IAAO;IACZ,KAAK,IAAO;IACZ,KAAK,IAAO;CACf"}
@@ -12,35 +12,32 @@ export class Technic3x3ColorLightMatrix extends Device {
12
12
  /**
13
13
  * Set the LED matrix, one color per LED
14
14
  * @param {Color[] | Color} colors Array of 9 colors, 9 Color objects, or a single color
15
- * @returns {Promise} Resolved upon successful issuance of the command.
15
+ * @returns {Promise<CommandFeedback>} Resolved upon completion of command.
16
16
  */
17
17
  setMatrix(colors) {
18
- return new Promise((resolve) => {
19
- this.subscribe(Mode.PIX_0);
20
- const colorArray = new Array(9);
21
- for (let i = 0; i < colorArray.length; i++) {
22
- if (typeof colors === 'number') {
23
- // @ts-ignore
24
- colorArray[i] = colors + (10 << 4);
25
- }
18
+ this.subscribe(Mode.PIX_0);
19
+ const colorArray = new Array(9);
20
+ for (let i = 0; i < colorArray.length; i++) {
21
+ if (typeof colors === 'number') {
26
22
  // @ts-ignore
27
- if (colors[i] instanceof Color) {
28
- // @ts-ignore
29
- colorArray[i] = colors[i].toValue();
30
- }
23
+ colorArray[i] = colors + (10 << 4);
24
+ }
25
+ // @ts-ignore
26
+ if (colors[i] instanceof Color) {
31
27
  // @ts-ignore
32
- if (colors[i] === Consts.Color.NONE) {
33
- colorArray[i] = Consts.Color.NONE;
34
- }
28
+ colorArray[i] = colors[i].toValue();
29
+ }
30
+ // @ts-ignore
31
+ if (colors[i] === Consts.Color.NONE) {
32
+ colorArray[i] = Consts.Color.NONE;
33
+ }
34
+ // @ts-ignore
35
+ if (colors[i] <= 10) {
35
36
  // @ts-ignore
36
- if (colors[i] <= 10) {
37
- // @ts-ignore
38
- colorArray[i] = colors[i] + (10 << 4); // If a raw color value, set it to max brightness (10)
39
- }
37
+ colorArray[i] = colors[i] + (10 << 4); // If a raw color value, set it to max brightness (10)
40
38
  }
41
- this.writeDirect(Mode.PIX_0, Buffer.from(colorArray));
42
- return resolve();
43
- });
39
+ }
40
+ return this.writeDirect(Mode.PIX_0, Buffer.from(colorArray));
44
41
  }
45
42
  }
46
43
  export var Mode;
@@ -1 +1 @@
1
- {"version":3,"file":"technic3x3colorlightmatrix.js","sourceRoot":"","sources":["../../src/devices/technic3x3colorlightmatrix.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAIrC,OAAO,KAAK,MAAM,MAAM,cAAc,CAAC;AAEvC;;;GAGG;AACH,MAAM,OAAO,0BAA2B,SAAQ,MAAM;IAGlD,YAAa,GAAqB,EAAE,MAAc;QAC9C,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,UAAU,CAAC,8BAA8B,CAAC,CAAC;IAC7E,CAAC;IAGD;;;;OAIG;IACI,SAAS,CAAE,MAAyB;QACvC,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YACjC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3B,MAAM,UAAU,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;YAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACzC,IAAI,OAAO,MAAM,KAAM,QAAQ,EAAE,CAAC;oBAC9B,aAAa;oBACb,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;gBACvC,CAAC;gBACD,aAAa;gBACb,IAAI,MAAM,CAAC,CAAC,CAAC,YAAY,KAAK,EAAE,CAAC;oBAC7B,aAAa;oBACb,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;gBACxC,CAAC;gBACD,aAAa;gBACb,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;oBAClC,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;gBACtC,CAAC;gBACD,aAAa;gBACb,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;oBAClB,aAAa;oBACb,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,sDAAsD;gBACjG,CAAC;YACL,CAAC;YACD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YACtD,OAAO,OAAO,EAAE,CAAC;QACrB,CAAC,CAAC,CAAC;IACP,CAAC;CAGJ;AAED,MAAM,CAAN,IAAY,IAKX;AALD,WAAY,IAAI;IACZ,iCAAY,CAAA;IACZ,iCAAY,CAAA;IACZ,iCAAY,CAAA;IACZ,iCAAY,CAAA;AAChB,CAAC,EALW,IAAI,KAAJ,IAAI,QAKf"}
1
+ {"version":3,"file":"technic3x3colorlightmatrix.js","sourceRoot":"","sources":["../../src/devices/technic3x3colorlightmatrix.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAIrC,OAAO,KAAK,MAAM,MAAM,cAAc,CAAC;AAEvC;;;GAGG;AACH,MAAM,OAAO,0BAA2B,SAAQ,MAAM;IAGlD,YAAa,GAAqB,EAAE,MAAc;QAC9C,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,UAAU,CAAC,8BAA8B,CAAC,CAAC;IAC7E,CAAC;IAGD;;;;OAIG;IACI,SAAS,CAAE,MAAyB;QACvC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B,MAAM,UAAU,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,IAAI,OAAO,MAAM,KAAM,QAAQ,EAAE,CAAC;gBAC9B,aAAa;gBACb,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;YACvC,CAAC;YACD,aAAa;YACb,IAAI,MAAM,CAAC,CAAC,CAAC,YAAY,KAAK,EAAE,CAAC;gBAC7B,aAAa;gBACb,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YACxC,CAAC;YACD,aAAa;YACb,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBAClC,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;YACtC,CAAC;YACD,aAAa;YACb,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;gBAClB,aAAa;gBACb,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,sDAAsD;YACjG,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACjE,CAAC;CAGJ;AAED,MAAM,CAAN,IAAY,IAKX;AALD,WAAY,IAAI;IACZ,iCAAY,CAAA;IACZ,iCAAY,CAAA;IACZ,iCAAY,CAAA;IACZ,iCAAY,CAAA;AAChB,CAAC,EALW,IAAI,KAAJ,IAAI,QAKf"}
@@ -1,5 +1,6 @@
1
1
  import { Device } from "./device.js";
2
2
  import { IDeviceInterface } from "../interfaces.js";
3
+ import * as Consts from "../consts.js";
3
4
  /**
4
5
  * @class TechnicColorSensor
5
6
  * @extends Device
@@ -12,14 +13,18 @@ export declare class TechnicColorSensor extends Device {
12
13
  * @param {number} firstSegment First light segment. 0-100 brightness.
13
14
  * @param {number} secondSegment Second light segment. 0-100 brightness.
14
15
  * @param {number} thirdSegment Third light segment. 0-100 brightness.
15
- * @returns {Promise} Resolved upon successful issuance of the command.
16
+ * @returns {Promise<CommandFeedback>} Resolved upon completion of the command.
16
17
  */
17
- setBrightness(firstSegment: number, secondSegment: number, thirdSegment: number): void;
18
+ setBrightness(firstSegment: number, secondSegment: number, thirdSegment: number): Promise<Consts.CommandFeedback> | undefined;
18
19
  }
19
20
  export declare enum Mode {
20
21
  COLOR = 0,
21
- REFLECTIVITY = 1,
22
- AMBIENT_LIGHT = 2
22
+ REFLECT = 1,
23
+ AMBIENT = 2,
24
+ LIGHT = 3,
25
+ RGB_I = 5,
26
+ HSV = 6,
27
+ SHSV = 7
23
28
  }
24
29
  export declare const ModeMap: {
25
30
  [event: string]: number;
@@ -1 +1 @@
1
- {"version":3,"file":"techniccolorsensor.d.ts","sourceRoot":"","sources":["../../src/devices/techniccolorsensor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAKpD;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,MAAM;gBAE7B,GAAG,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM;IAI3C,OAAO,CAAE,OAAO,EAAE,MAAM;IA4C/B;;;;;;OAMG;IACI,aAAa,CAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;CAI1F;AAED,oBAAY,IAAI;IACZ,KAAK,IAAO;IACZ,YAAY,IAAO;IACnB,aAAa,IAAO;CACvB;AAED,eAAO,MAAM,OAAO,EAAE;IAAC,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAI7C,CAAC"}
1
+ {"version":3,"file":"techniccolorsensor.d.ts","sourceRoot":"","sources":["../../src/devices/techniccolorsensor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,KAAK,MAAM,MAAM,cAAc,CAAC;AAGvC;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,MAAM;gBAE7B,GAAG,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM;IAI3C,OAAO,CAAE,OAAO,EAAE,MAAM;IAgI/B;;;;;;OAMG;IACI,aAAa,CAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;CAK1F;AAED,oBAAY,IAAI;IACZ,KAAK,IAAO;IACZ,OAAO,IAAO;IACd,OAAO,IAAO;IACd,KAAK,IAAO;IACZ,KAAK,IAAO;IACZ,GAAG,IAAO;IACV,IAAI,IAAO;CACd;AAED,eAAO,MAAM,OAAO,EAAE;IAAC,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAO7C,CAAC"}
@@ -11,8 +11,16 @@ export class TechnicColorSensor extends Device {
11
11
  }
12
12
  receive(message) {
13
13
  const mode = this._mode;
14
+ let hue;
15
+ let saturation;
16
+ let value;
17
+ let intensity;
14
18
  switch (mode) {
15
19
  case Mode.COLOR:
20
+ if (message.length !== 5) {
21
+ // if mode of device has not changed to this._mode yet
22
+ break;
23
+ }
16
24
  if (message[4] <= 10) {
17
25
  const color = parseColor(message[4]);
18
26
  /**
@@ -24,7 +32,11 @@ export class TechnicColorSensor extends Device {
24
32
  this.notify("color", { color });
25
33
  }
26
34
  break;
27
- case Mode.REFLECTIVITY:
35
+ case Mode.REFLECT:
36
+ if (message.length !== 5) {
37
+ // if mode of device has not changed to this._mode yet
38
+ break;
39
+ }
28
40
  const reflect = message[4];
29
41
  /**
30
42
  * Emits when the light reflectivity changes.
@@ -34,7 +46,11 @@ export class TechnicColorSensor extends Device {
34
46
  */
35
47
  this.notify("reflect", { reflect });
36
48
  break;
37
- case Mode.AMBIENT_LIGHT:
49
+ case Mode.AMBIENT:
50
+ if (message.length !== 5) {
51
+ // if mode of device has not changed to this._mode yet
52
+ break;
53
+ }
38
54
  const ambient = message[4];
39
55
  /**
40
56
  * Emits when the ambient light changes.
@@ -44,6 +60,73 @@ export class TechnicColorSensor extends Device {
44
60
  */
45
61
  this.notify("ambient", { ambient });
46
62
  break;
63
+ case Mode.RGB_I:
64
+ if (this.isWeDo2SmartHub) {
65
+ break;
66
+ }
67
+ if (message.length !== 12) {
68
+ // if mode of device has not changed to this._mode yet
69
+ break;
70
+ }
71
+ const red = message.readUInt16LE(4);
72
+ const green = message.readUInt16LE(6);
73
+ const blue = message.readUInt16LE(8);
74
+ intensity = message.readUInt16LE(10);
75
+ /**
76
+ * Emits when a color sensor is activated. Measured with light on.
77
+ * @event TechnicColorSensor#rgbIntensity
78
+ * @type {object}
79
+ * @param {number} red
80
+ * @param {number} green
81
+ * @param {number} blue
82
+ * @param {number} intensity
83
+ */
84
+ this.notify("rgbIntensity", { red, green, blue, intensity });
85
+ break;
86
+ case Mode.HSV:
87
+ if (this.isWeDo2SmartHub) {
88
+ break;
89
+ }
90
+ if (message.length !== 10) {
91
+ // if mode of device has not changed to this._mode yet
92
+ break;
93
+ }
94
+ hue = message.readUInt16LE(4);
95
+ saturation = message.readUInt16LE(6);
96
+ value = message.readUInt16LE(8);
97
+ /**
98
+ * Emits when a color sensor is activated. Measured with light on.
99
+ * @event TechnicColorSensor#hsvIntensity
100
+ * @type {object}
101
+ * @param {number} hue
102
+ * @param {number} saturation
103
+ * @param {number} value
104
+ */
105
+ this.notify("hsvIntensity", { hue, saturation, value });
106
+ break;
107
+ case Mode.SHSV:
108
+ if (this.isWeDo2SmartHub) {
109
+ break;
110
+ }
111
+ if (message.length !== 12) {
112
+ // if mode of device has not changed to this._mode yet
113
+ break;
114
+ }
115
+ hue = message.readUInt16LE(4);
116
+ saturation = message.readUInt16LE(6);
117
+ value = message.readUInt16LE(8);
118
+ intensity = message.readUInt16LE(10);
119
+ /**
120
+ * Emits when a color sensor is activated. Measured with light off.
121
+ * @event TechnicColorSensor#hsvAmbient
122
+ * @type {object}
123
+ * @param {number} hue
124
+ * @param {number} saturation
125
+ * @param {number} value
126
+ * @param {number} intensity
127
+ */
128
+ this.notify("hsvAmbient", { hue, saturation, value, intensity });
129
+ break;
47
130
  }
48
131
  }
49
132
  /**
@@ -51,21 +134,29 @@ export class TechnicColorSensor extends Device {
51
134
  * @param {number} firstSegment First light segment. 0-100 brightness.
52
135
  * @param {number} secondSegment Second light segment. 0-100 brightness.
53
136
  * @param {number} thirdSegment Third light segment. 0-100 brightness.
54
- * @returns {Promise} Resolved upon successful issuance of the command.
137
+ * @returns {Promise<CommandFeedback>} Resolved upon completion of the command.
55
138
  */
56
139
  setBrightness(firstSegment, secondSegment, thirdSegment) {
57
- this.writeDirect(0x03, Buffer.from([firstSegment, secondSegment, thirdSegment]));
140
+ this.subscribe(Mode.LIGHT); // other modes use different light setting
141
+ return this.writeDirect(Mode.LIGHT, Buffer.from([firstSegment, secondSegment, thirdSegment]));
58
142
  }
59
143
  }
60
144
  export var Mode;
61
145
  (function (Mode) {
62
146
  Mode[Mode["COLOR"] = 0] = "COLOR";
63
- Mode[Mode["REFLECTIVITY"] = 1] = "REFLECTIVITY";
64
- Mode[Mode["AMBIENT_LIGHT"] = 2] = "AMBIENT_LIGHT";
147
+ Mode[Mode["REFLECT"] = 1] = "REFLECT";
148
+ Mode[Mode["AMBIENT"] = 2] = "AMBIENT";
149
+ Mode[Mode["LIGHT"] = 3] = "LIGHT";
150
+ Mode[Mode["RGB_I"] = 5] = "RGB_I";
151
+ Mode[Mode["HSV"] = 6] = "HSV";
152
+ Mode[Mode["SHSV"] = 7] = "SHSV";
65
153
  })(Mode || (Mode = {}));
66
154
  export const ModeMap = {
67
155
  "color": Mode.COLOR,
68
- "reflect": Mode.REFLECTIVITY,
69
- "ambient": Mode.AMBIENT_LIGHT
156
+ "reflect": Mode.REFLECT,
157
+ "ambient": Mode.AMBIENT,
158
+ "rgbIntensity": Mode.RGB_I,
159
+ "hsvIntensity": Mode.HSV,
160
+ "hsvAmbient": Mode.SHSV
70
161
  };
71
162
  //# sourceMappingURL=techniccolorsensor.js.map