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.
- package/README.md +6 -12
- package/dist/browser/poweredup.js +6193 -3
- package/dist/browser/poweredup.js.map +7 -1
- package/dist/{node/color.d.ts → color.d.ts} +1 -0
- package/dist/color.d.ts.map +1 -0
- package/dist/color.js +15 -0
- package/dist/color.js.map +1 -0
- package/dist/{node/consts.d.ts → consts.d.ts} +57 -16
- package/dist/consts.d.ts.map +1 -0
- package/dist/{node/consts.js → consts.js} +115 -76
- package/dist/consts.js.map +1 -0
- package/dist/{node/devices → devices}/absolutemotor.d.ts +12 -13
- package/dist/devices/absolutemotor.d.ts.map +1 -0
- package/dist/devices/absolutemotor.js +108 -0
- package/dist/devices/absolutemotor.js.map +1 -0
- package/dist/devices/basicmotor.d.ts +38 -0
- package/dist/devices/basicmotor.d.ts.map +1 -0
- package/dist/devices/basicmotor.js +51 -0
- package/dist/devices/basicmotor.js.map +1 -0
- package/dist/{node/devices → devices}/colordistancesensor.d.ts +20 -25
- package/dist/devices/colordistancesensor.d.ts.map +1 -0
- package/dist/{node/devices → devices}/colordistancesensor.js +40 -79
- package/dist/devices/colordistancesensor.js.map +1 -0
- package/dist/{node/devices → devices}/currentsensor.d.ts +3 -3
- package/dist/devices/currentsensor.d.ts.map +1 -0
- package/dist/{node/devices → devices}/currentsensor.js +7 -34
- package/dist/devices/currentsensor.js.map +1 -0
- package/dist/{node/devices → devices}/device.d.ts +18 -11
- package/dist/devices/device.d.ts.map +1 -0
- package/dist/devices/device.js +350 -0
- package/dist/devices/device.js.map +1 -0
- package/dist/{node/devices → devices}/duplotrainbasecolorsensor.d.ts +3 -3
- package/dist/devices/duplotrainbasecolorsensor.d.ts.map +1 -0
- package/dist/{node/devices → devices}/duplotrainbasecolorsensor.js +9 -36
- package/dist/devices/duplotrainbasecolorsensor.js.map +1 -0
- package/dist/{node/devices → devices}/duplotrainbasemotor.d.ts +3 -2
- package/dist/devices/duplotrainbasemotor.d.ts.map +1 -0
- package/dist/devices/duplotrainbasemotor.js +12 -0
- package/dist/devices/duplotrainbasemotor.js.map +1 -0
- package/dist/devices/duplotrainbasespeaker.d.ts +27 -0
- package/dist/devices/duplotrainbasespeaker.d.ts.map +1 -0
- package/dist/devices/duplotrainbasespeaker.js +35 -0
- package/dist/devices/duplotrainbasespeaker.js.map +1 -0
- package/dist/{node/devices → devices}/duplotrainbasespeedometer.d.ts +3 -3
- package/dist/devices/duplotrainbasespeedometer.d.ts.map +1 -0
- package/dist/devices/duplotrainbasespeedometer.js +34 -0
- package/dist/devices/duplotrainbasespeedometer.js.map +1 -0
- package/dist/devices/hubled.d.ts +29 -0
- package/dist/devices/hubled.d.ts.map +1 -0
- package/dist/devices/hubled.js +58 -0
- package/dist/devices/hubled.js.map +1 -0
- package/dist/{node/devices → devices}/light.d.ts +10 -8
- package/dist/devices/light.d.ts.map +1 -0
- package/dist/devices/light.js +38 -0
- package/dist/devices/light.js.map +1 -0
- package/dist/{node/devices → devices}/marioaccelerometer.d.ts +3 -3
- package/dist/devices/marioaccelerometer.d.ts.map +1 -0
- package/dist/devices/marioaccelerometer.js +50 -0
- package/dist/devices/marioaccelerometer.js.map +1 -0
- package/dist/{node/devices → devices}/mariobarcodesensor.d.ts +3 -3
- package/dist/devices/mariobarcodesensor.d.ts.map +1 -0
- package/dist/{node/devices → devices}/mariobarcodesensor.js +7 -34
- package/dist/devices/mariobarcodesensor.js.map +1 -0
- package/dist/{node/devices → devices}/mariopantssensor.d.ts +3 -3
- package/dist/devices/mariopantssensor.d.ts.map +1 -0
- package/dist/devices/mariopantssensor.js +34 -0
- package/dist/devices/mariopantssensor.js.map +1 -0
- package/dist/{node/devices → devices}/mediumlinearmotor.d.ts +3 -2
- package/dist/devices/mediumlinearmotor.d.ts.map +1 -0
- package/dist/devices/mediumlinearmotor.js +12 -0
- package/dist/devices/mediumlinearmotor.js.map +1 -0
- package/dist/{node/devices → devices}/motionsensor.d.ts +3 -3
- package/dist/devices/motionsensor.d.ts.map +1 -0
- package/dist/devices/motionsensor.js +38 -0
- package/dist/devices/motionsensor.js.map +1 -0
- package/dist/{node/devices → devices}/movehubmediumlinearmotor.d.ts +3 -2
- package/dist/devices/movehubmediumlinearmotor.d.ts.map +1 -0
- package/dist/devices/movehubmediumlinearmotor.js +12 -0
- package/dist/devices/movehubmediumlinearmotor.js.map +1 -0
- package/dist/{node/devices → devices}/movehubtiltsensor.d.ts +3 -3
- package/dist/devices/movehubtiltsensor.d.ts.map +1 -0
- package/dist/devices/movehubtiltsensor.js +36 -0
- package/dist/devices/movehubtiltsensor.js.map +1 -0
- package/dist/devices/piezobuzzer.d.ts +18 -0
- package/dist/devices/piezobuzzer.d.ts.map +1 -0
- package/dist/devices/piezobuzzer.js +27 -0
- package/dist/devices/piezobuzzer.js.map +1 -0
- package/dist/{node/devices → devices}/remotecontrolbutton.d.ts +3 -3
- package/dist/devices/remotecontrolbutton.d.ts.map +1 -0
- package/dist/devices/remotecontrolbutton.js +40 -0
- package/dist/devices/remotecontrolbutton.js.map +1 -0
- package/dist/{node/devices → devices}/simplemediumlinearmotor.d.ts +3 -2
- package/dist/devices/simplemediumlinearmotor.d.ts.map +1 -0
- package/dist/devices/simplemediumlinearmotor.js +12 -0
- package/dist/devices/simplemediumlinearmotor.js.map +1 -0
- package/dist/{node/devices → devices}/tachomotor.d.ts +19 -19
- package/dist/devices/tachomotor.d.ts.map +1 -0
- package/dist/devices/tachomotor.js +155 -0
- package/dist/devices/tachomotor.js.map +1 -0
- package/dist/{node/devices → devices}/technic3x3colorlightmatrix.d.ts +6 -5
- package/dist/devices/technic3x3colorlightmatrix.d.ts.map +1 -0
- package/dist/devices/technic3x3colorlightmatrix.js +50 -0
- package/dist/devices/technic3x3colorlightmatrix.js.map +1 -0
- package/dist/{node/devices → devices}/techniccolorsensor.d.ts +12 -8
- package/dist/devices/techniccolorsensor.d.ts.map +1 -0
- package/dist/devices/techniccolorsensor.js +162 -0
- package/dist/devices/techniccolorsensor.js.map +1 -0
- package/dist/{node/devices → devices}/technicdistancesensor.d.ts +4 -5
- package/dist/devices/technicdistancesensor.d.ts.map +1 -0
- package/dist/{node/devices → devices}/technicdistancesensor.js +8 -36
- package/dist/devices/technicdistancesensor.js.map +1 -0
- package/dist/{node/devices → devices}/technicforcesensor.d.ts +3 -3
- package/dist/devices/technicforcesensor.d.ts.map +1 -0
- package/dist/{node/devices → devices}/technicforcesensor.js +7 -34
- package/dist/devices/technicforcesensor.js.map +1 -0
- package/dist/{node/devices → devices}/techniclargeangularmotor.d.ts +4 -3
- package/dist/devices/techniclargeangularmotor.d.ts.map +1 -0
- package/dist/devices/techniclargeangularmotor.js +12 -0
- package/dist/devices/techniclargeangularmotor.js.map +1 -0
- package/dist/{node/devices → devices}/techniclargelinearmotor.d.ts +3 -2
- package/dist/devices/techniclargelinearmotor.d.ts.map +1 -0
- package/dist/devices/techniclargelinearmotor.js +12 -0
- package/dist/devices/techniclargelinearmotor.js.map +1 -0
- package/dist/{node/devices → devices}/technicmediumangularmotor.d.ts +4 -3
- package/dist/devices/technicmediumangularmotor.d.ts.map +1 -0
- package/dist/devices/technicmediumangularmotor.js +12 -0
- package/dist/devices/technicmediumangularmotor.js.map +1 -0
- package/dist/{node/devices → devices}/technicmediumhubaccelerometersensor.d.ts +3 -3
- package/dist/devices/technicmediumhubaccelerometersensor.d.ts.map +1 -0
- package/dist/devices/technicmediumhubaccelerometersensor.js +38 -0
- package/dist/devices/technicmediumhubaccelerometersensor.js.map +1 -0
- package/dist/{node/devices → devices}/technicmediumhubgyrosensor.d.ts +3 -3
- package/dist/devices/technicmediumhubgyrosensor.d.ts.map +1 -0
- package/dist/devices/technicmediumhubgyrosensor.js +38 -0
- package/dist/devices/technicmediumhubgyrosensor.js.map +1 -0
- package/dist/devices/technicmediumhubtiltsensor.d.ts +39 -0
- package/dist/devices/technicmediumhubtiltsensor.d.ts.map +1 -0
- package/dist/devices/technicmediumhubtiltsensor.js +94 -0
- package/dist/devices/technicmediumhubtiltsensor.js.map +1 -0
- package/dist/{node/devices → devices}/technicsmallangularmotor.d.ts +4 -3
- package/dist/devices/technicsmallangularmotor.d.ts.map +1 -0
- package/dist/devices/technicsmallangularmotor.js +12 -0
- package/dist/devices/technicsmallangularmotor.js.map +1 -0
- package/dist/{node/devices → devices}/technicxlargelinearmotor.d.ts +3 -2
- package/dist/devices/technicxlargelinearmotor.d.ts.map +1 -0
- package/dist/devices/technicxlargelinearmotor.js +12 -0
- package/dist/devices/technicxlargelinearmotor.js.map +1 -0
- package/dist/{node/devices → devices}/tiltsensor.d.ts +7 -4
- package/dist/devices/tiltsensor.d.ts.map +1 -0
- package/dist/devices/tiltsensor.js +117 -0
- package/dist/devices/tiltsensor.js.map +1 -0
- package/dist/{node/devices → devices}/trainmotor.d.ts +3 -2
- package/dist/devices/trainmotor.d.ts.map +1 -0
- package/dist/devices/trainmotor.js +12 -0
- package/dist/devices/trainmotor.js.map +1 -0
- package/dist/{node/devices → devices}/voltagesensor.d.ts +3 -3
- package/dist/devices/voltagesensor.d.ts.map +1 -0
- package/dist/{node/devices → devices}/voltagesensor.js +7 -34
- package/dist/devices/voltagesensor.js.map +1 -0
- package/dist/{node/hubs → hubs}/basehub.d.ts +5 -14
- package/dist/hubs/basehub.d.ts.map +1 -0
- package/dist/{node/hubs → hubs}/basehub.js +91 -110
- package/dist/hubs/basehub.js.map +1 -0
- package/dist/{node/hubs → hubs}/duplotrainbase.d.ts +4 -4
- package/dist/hubs/duplotrainbase.d.ts.map +1 -0
- package/dist/hubs/duplotrainbase.js +35 -0
- package/dist/hubs/duplotrainbase.js.map +1 -0
- package/dist/{node/hubs → hubs}/hub.d.ts +4 -4
- package/dist/hubs/hub.d.ts.map +1 -0
- package/dist/hubs/hub.js +44 -0
- package/dist/hubs/hub.js.map +1 -0
- package/dist/{node/hubs → hubs}/lpf2hub.d.ts +3 -5
- package/dist/hubs/lpf2hub.d.ts.map +1 -0
- package/dist/{node/hubs → hubs}/lpf2hub.js +28 -47
- package/dist/hubs/lpf2hub.js.map +1 -0
- package/dist/{node/hubs → hubs}/mario.d.ts +4 -4
- package/dist/hubs/mario.d.ts.map +1 -0
- package/dist/hubs/mario.js +31 -0
- package/dist/hubs/mario.js.map +1 -0
- package/dist/{node/hubs → hubs}/movehub.d.ts +4 -4
- package/dist/hubs/movehub.d.ts.map +1 -0
- package/dist/hubs/movehub.js +46 -0
- package/dist/hubs/movehub.js.map +1 -0
- package/dist/{node/hubs → hubs}/remotecontrol.d.ts +4 -4
- package/dist/hubs/remotecontrol.d.ts.map +1 -0
- package/dist/hubs/remotecontrol.js +37 -0
- package/dist/hubs/remotecontrol.js.map +1 -0
- package/dist/{node/hubs → hubs}/technicmediumhub.d.ts +4 -4
- package/dist/hubs/technicmediumhub.d.ts.map +1 -0
- package/dist/hubs/technicmediumhub.js +42 -0
- package/dist/hubs/technicmediumhub.js.map +1 -0
- package/dist/{node/hubs → hubs}/technicsmallhub.d.ts +4 -4
- package/dist/hubs/technicsmallhub.d.ts.map +1 -0
- package/dist/hubs/technicsmallhub.js +41 -0
- package/dist/hubs/technicsmallhub.js.map +1 -0
- package/dist/{node/hubs → hubs}/wedo2smarthub.d.ts +4 -7
- package/dist/hubs/wedo2smarthub.d.ts.map +1 -0
- package/dist/{node/hubs → hubs}/wedo2smarthub.js +10 -39
- package/dist/hubs/wedo2smarthub.js.map +1 -0
- package/dist/index-browser.d.ts +2 -0
- package/dist/index-browser.d.ts.map +1 -0
- package/dist/index-browser.js +96 -0
- package/dist/index-browser.js.map +1 -0
- package/dist/index-node.d.ts +50 -0
- package/dist/index-node.d.ts.map +1 -0
- package/dist/{node/index-node.d.ts → index-node.js} +48 -46
- package/dist/index-node.js.map +1 -0
- package/dist/{node/interfaces.d.ts → interfaces.d.ts} +3 -4
- package/dist/interfaces.d.ts.map +1 -0
- package/dist/interfaces.js +2 -0
- package/dist/{node/interfaces.js.map → interfaces.js.map} +1 -1
- package/dist/{node/nobleabstraction.d.ts → nobleabstraction.d.ts} +3 -4
- package/dist/nobleabstraction.d.ts.map +1 -0
- package/dist/{node/nobleabstraction.js → nobleabstraction.js} +5 -9
- package/dist/nobleabstraction.js.map +1 -0
- package/dist/portoutputcommand.d.ts +13 -0
- package/dist/portoutputcommand.d.ts.map +1 -0
- package/dist/portoutputcommand.js +30 -0
- package/dist/portoutputcommand.js.map +1 -0
- package/dist/portoutputsleep.d.ts +6 -0
- package/dist/portoutputsleep.d.ts.map +1 -0
- package/dist/portoutputsleep.js +10 -0
- package/dist/portoutputsleep.js.map +1 -0
- package/dist/{node/poweredup-browser.d.ts → poweredup-browser.d.ts} +2 -8
- package/dist/poweredup-browser.d.ts.map +1 -0
- package/dist/{node/poweredup-browser.js → poweredup-browser.js} +23 -55
- package/dist/poweredup-browser.js.map +1 -0
- package/dist/{node/poweredup-node.d.ts → poweredup-node.d.ts} +3 -10
- package/dist/poweredup-node.d.ts.map +1 -0
- package/dist/{node/poweredup-node.js → poweredup-node.js} +32 -66
- package/dist/poweredup-node.js.map +1 -0
- package/dist/{node/utils.d.ts → utils.d.ts} +2 -4
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +84 -0
- package/dist/utils.js.map +1 -0
- package/dist/{node/webbleabstraction.d.ts → webbleabstraction.d.ts} +3 -4
- package/dist/webbleabstraction.d.ts.map +1 -0
- package/dist/{node/webbleabstraction.js → webbleabstraction.js} +3 -7
- package/dist/webbleabstraction.js.map +1 -0
- package/docs/.nojekyll +1 -0
- package/docs/assets/hierarchy.js +1 -0
- package/docs/assets/highlight.css +99 -0
- package/docs/assets/icons.js +18 -0
- package/docs/assets/icons.svg +1 -0
- package/docs/assets/main.js +60 -0
- package/docs/assets/navigation.js +1 -0
- package/docs/assets/search.js +1 -0
- package/docs/assets/style.css +1633 -0
- package/docs/classes/AbsoluteMotor.html +242 -0
- package/docs/classes/BaseHub.html +220 -0
- package/docs/classes/BasicMotor.html +201 -0
- package/docs/classes/Color.html +3 -0
- package/docs/classes/ColorDistanceSensor.html +214 -0
- package/docs/classes/CurrentSensor.html +185 -0
- package/docs/classes/Device.html +185 -0
- package/docs/classes/DuploTrainBase.html +233 -0
- package/docs/classes/DuploTrainBaseColorSensor.html +185 -0
- package/docs/classes/DuploTrainBaseMotor.html +201 -0
- package/docs/classes/DuploTrainBaseSpeaker.html +191 -0
- package/docs/classes/DuploTrainBaseSpeedometer.html +185 -0
- package/docs/classes/Hub.html +233 -0
- package/docs/classes/HubLED.html +191 -0
- package/docs/classes/Light.html +195 -0
- package/docs/classes/Mario.html +233 -0
- package/docs/classes/MediumLinearMotor.html +229 -0
- package/docs/classes/MotionSensor.html +185 -0
- package/docs/classes/MoveHub.html +233 -0
- package/docs/classes/MoveHubMediumLinearMotor.html +229 -0
- package/docs/classes/MoveHubTiltSensor.html +185 -0
- package/docs/classes/PiezoBuzzer.html +189 -0
- package/docs/classes/PoweredUP.html +180 -0
- package/docs/classes/RemoteControl.html +233 -0
- package/docs/classes/RemoteControlButton.html +185 -0
- package/docs/classes/SimpleMediumLinearMotor.html +201 -0
- package/docs/classes/TachoMotor.html +229 -0
- package/docs/classes/Technic3x3ColorLightMatrix.html +189 -0
- package/docs/classes/TechnicColorSensor.html +191 -0
- package/docs/classes/TechnicDistanceSensor.html +192 -0
- package/docs/classes/TechnicForceSensor.html +185 -0
- package/docs/classes/TechnicLargeAngularMotor.html +242 -0
- package/docs/classes/TechnicLargeLinearMotor.html +242 -0
- package/docs/classes/TechnicMediumAngularMotor.html +242 -0
- package/docs/classes/TechnicMediumHub.html +233 -0
- package/docs/classes/TechnicMediumHubAccelerometerSensor.html +185 -0
- package/docs/classes/TechnicMediumHubGyroSensor.html +185 -0
- package/docs/classes/TechnicMediumHubTiltSensor.html +197 -0
- package/docs/classes/TechnicSmallAngularMotor.html +242 -0
- package/docs/classes/TechnicXLargeLinearMotor.html +242 -0
- package/docs/classes/TiltSensor.html +185 -0
- package/docs/classes/TrainMotor.html +201 -0
- package/docs/classes/VoltageSensor.html +185 -0
- package/docs/classes/WeDo2SmartHub.html +229 -0
- package/docs/enums/ActionType.html +22 -0
- package/docs/enums/AlertOperation.html +10 -0
- package/docs/enums/AlertPayload.html +6 -0
- package/docs/enums/AlertType.html +10 -0
- package/docs/enums/BLECharacteristic.html +15 -0
- package/docs/enums/BLEManufacturerData.html +8 -0
- package/docs/enums/BLEService.html +7 -0
- package/docs/enums/BrakingStyle.html +7 -0
- package/docs/enums/ButtonState.html +11 -0
- package/docs/enums/Consts.Color.html +25 -0
- package/docs/enums/DeviceType.html +79 -0
- package/docs/enums/DuploTrainBaseSound.html +11 -0
- package/docs/enums/ErrorCode.html +18 -0
- package/docs/enums/Event.html +8 -0
- package/docs/enums/HWNetWorkCommandType.html +28 -0
- package/docs/enums/HWNetworkFamily.html +20 -0
- package/docs/enums/HWNetworkSubFamily.html +16 -0
- package/docs/enums/HubPropertyOperation.html +14 -0
- package/docs/enums/HubPropertyPayload.html +32 -0
- package/docs/enums/HubPropertyReference.html +32 -0
- package/docs/enums/HubType.html +19 -0
- package/docs/enums/IOTypeID.html +30 -0
- package/docs/enums/MarioColor.html +17 -0
- package/docs/enums/MarioPantsType.html +13 -0
- package/docs/enums/MessageType.html +48 -0
- package/docs/enums/ModeInformationType.html +22 -0
- package/docs/enums/PortInputFormatSetupSubCommand.html +14 -0
- package/docs/hierarchy.html +1 -0
- package/docs/index.html +18 -120
- package/docs/modules/Consts.html +1 -0
- package/docs/modules.html +1 -0
- package/docs/variables/ColorNames.html +1 -0
- package/docs/variables/DeviceTypeNames.html +1 -0
- package/docs/variables/HubTypeNames.html +1 -0
- package/docs/variables/isWebBluetooth.html +1 -0
- package/package.json +19 -25
- package/src/color.ts +1 -1
- package/src/consts.ts +60 -16
- package/src/devices/absolutemotor.ts +28 -38
- package/src/devices/basicmotor.ts +20 -30
- package/src/devices/colordistancesensor.ts +31 -43
- package/src/devices/currentsensor.ts +3 -3
- package/src/devices/device.ts +200 -22
- package/src/devices/duplotrainbasecolorsensor.ts +4 -4
- package/src/devices/duplotrainbasemotor.ts +3 -3
- package/src/devices/duplotrainbasespeaker.ts +8 -13
- package/src/devices/duplotrainbasespeedometer.ts +3 -3
- package/src/devices/hubled.ts +25 -27
- package/src/devices/light.ts +15 -24
- package/src/devices/marioaccelerometer.ts +3 -3
- package/src/devices/mariobarcodesensor.ts +3 -3
- package/src/devices/mariopantssensor.ts +3 -3
- package/src/devices/mediumlinearmotor.ts +3 -3
- package/src/devices/motionsensor.ts +3 -3
- package/src/devices/movehubmediumlinearmotor.ts +3 -3
- package/src/devices/movehubtiltsensor.ts +3 -3
- package/src/devices/piezobuzzer.ts +6 -7
- package/src/devices/remotecontrolbutton.ts +3 -3
- package/src/devices/simplemediumlinearmotor.ts +3 -3
- package/src/devices/tachomotor.ts +52 -64
- package/src/devices/technic3x3colorlightmatrix.ts +24 -28
- package/src/devices/techniccolorsensor.ts +106 -15
- package/src/devices/technicdistancesensor.ts +4 -5
- package/src/devices/technicforcesensor.ts +3 -3
- package/src/devices/techniclargeangularmotor.ts +3 -3
- package/src/devices/techniclargelinearmotor.ts +3 -3
- package/src/devices/technicmediumangularmotor.ts +3 -3
- package/src/devices/technicmediumhubaccelerometersensor.ts +3 -3
- package/src/devices/technicmediumhubgyrosensor.ts +3 -3
- package/src/devices/technicmediumhubtiltsensor.ts +15 -27
- package/src/devices/technicsmallangularmotor.ts +3 -3
- package/src/devices/technicxlargelinearmotor.ts +3 -3
- package/src/devices/tiltsensor.ts +88 -8
- package/src/devices/trainmotor.ts +3 -3
- package/src/devices/voltagesensor.ts +3 -3
- package/src/hubs/basehub.ts +60 -51
- package/src/hubs/duplotrainbase.ts +5 -5
- package/src/hubs/hub.ts +5 -5
- package/src/hubs/lpf2hub.ts +16 -12
- package/src/hubs/mario.ts +5 -5
- package/src/hubs/movehub.ts +5 -5
- package/src/hubs/remotecontrol.ts +5 -5
- package/src/hubs/technicmediumhub.ts +5 -5
- package/src/hubs/technicsmallhub.ts +5 -5
- package/src/hubs/wedo2smarthub.ts +7 -9
- package/src/index-browser.ts +46 -46
- package/src/index-node.ts +47 -46
- package/src/interfaces.ts +2 -2
- package/src/nobleabstraction.ts +10 -10
- package/src/portoutputcommand.ts +37 -0
- package/src/portoutputsleep.ts +11 -0
- package/src/poweredup-browser.ts +15 -19
- package/src/poweredup-node.ts +15 -22
- package/src/utils.ts +15 -20
- package/src/webbleabstraction.ts +3 -3
- package/tsconfig.tsbuildinfo +1 -0
- package/typedoc.json +14 -0
- package/webpack.config.cjs +35 -0
- package/.jsdoc.json +0 -40
- package/abandonware-noble.d.ts +0 -129
- package/dist/browser/poweredup.js.LICENSE.txt +0 -8
- package/dist/node/color.js +0 -42
- package/dist/node/color.js.map +0 -1
- package/dist/node/consts.js.map +0 -1
- package/dist/node/devices/absolutemotor.js +0 -145
- package/dist/node/devices/absolutemotor.js.map +0 -1
- package/dist/node/devices/basicmotor.d.ts +0 -40
- package/dist/node/devices/basicmotor.js +0 -88
- package/dist/node/devices/basicmotor.js.map +0 -1
- package/dist/node/devices/colordistancesensor.js.map +0 -1
- package/dist/node/devices/currentsensor.js.map +0 -1
- package/dist/node/devices/device.js +0 -189
- package/dist/node/devices/device.js.map +0 -1
- package/dist/node/devices/duplotrainbasecolorsensor.js.map +0 -1
- package/dist/node/devices/duplotrainbasemotor.js +0 -39
- package/dist/node/devices/duplotrainbasemotor.js.map +0 -1
- package/dist/node/devices/duplotrainbasespeaker.d.ts +0 -28
- package/dist/node/devices/duplotrainbasespeaker.js +0 -67
- package/dist/node/devices/duplotrainbasespeaker.js.map +0 -1
- package/dist/node/devices/duplotrainbasespeedometer.js +0 -61
- package/dist/node/devices/duplotrainbasespeedometer.js.map +0 -1
- package/dist/node/devices/hubled.d.ts +0 -29
- package/dist/node/devices/hubled.js +0 -87
- package/dist/node/devices/hubled.js.map +0 -1
- package/dist/node/devices/light.js +0 -73
- package/dist/node/devices/light.js.map +0 -1
- package/dist/node/devices/marioaccelerometer.js +0 -77
- package/dist/node/devices/marioaccelerometer.js.map +0 -1
- package/dist/node/devices/mariobarcodesensor.js.map +0 -1
- package/dist/node/devices/mariopantssensor.js +0 -61
- package/dist/node/devices/mariopantssensor.js.map +0 -1
- package/dist/node/devices/mediumlinearmotor.js +0 -39
- package/dist/node/devices/mediumlinearmotor.js.map +0 -1
- package/dist/node/devices/motionsensor.js +0 -65
- package/dist/node/devices/motionsensor.js.map +0 -1
- package/dist/node/devices/movehubmediumlinearmotor.js +0 -39
- package/dist/node/devices/movehubmediumlinearmotor.js.map +0 -1
- package/dist/node/devices/movehubtiltsensor.js +0 -63
- package/dist/node/devices/movehubtiltsensor.js.map +0 -1
- package/dist/node/devices/piezobuzzer.d.ts +0 -17
- package/dist/node/devices/piezobuzzer.js +0 -55
- package/dist/node/devices/piezobuzzer.js.map +0 -1
- package/dist/node/devices/remotecontrolbutton.js +0 -67
- package/dist/node/devices/remotecontrolbutton.js.map +0 -1
- package/dist/node/devices/simplemediumlinearmotor.js +0 -39
- package/dist/node/devices/simplemediumlinearmotor.js.map +0 -1
- package/dist/node/devices/tachomotor.js +0 -194
- package/dist/node/devices/tachomotor.js.map +0 -1
- package/dist/node/devices/technic3x3colorlightmatrix.js +0 -81
- package/dist/node/devices/technic3x3colorlightmatrix.js.map +0 -1
- package/dist/node/devices/techniccolorsensor.js +0 -99
- package/dist/node/devices/techniccolorsensor.js.map +0 -1
- package/dist/node/devices/technicdistancesensor.js.map +0 -1
- package/dist/node/devices/technicforcesensor.js.map +0 -1
- package/dist/node/devices/techniclargeangularmotor.js +0 -39
- package/dist/node/devices/techniclargeangularmotor.js.map +0 -1
- package/dist/node/devices/techniclargelinearmotor.js +0 -39
- package/dist/node/devices/techniclargelinearmotor.js.map +0 -1
- package/dist/node/devices/technicmediumangularmotor.js +0 -39
- package/dist/node/devices/technicmediumangularmotor.js.map +0 -1
- package/dist/node/devices/technicmediumhubaccelerometersensor.js +0 -65
- package/dist/node/devices/technicmediumhubaccelerometersensor.js.map +0 -1
- package/dist/node/devices/technicmediumhubgyrosensor.js +0 -65
- package/dist/node/devices/technicmediumhubgyrosensor.js.map +0 -1
- package/dist/node/devices/technicmediumhubtiltsensor.d.ts +0 -41
- package/dist/node/devices/technicmediumhubtiltsensor.js +0 -133
- package/dist/node/devices/technicmediumhubtiltsensor.js.map +0 -1
- package/dist/node/devices/technicsmallangularmotor.js +0 -39
- package/dist/node/devices/technicsmallangularmotor.js.map +0 -1
- package/dist/node/devices/technicxlargelinearmotor.js +0 -39
- package/dist/node/devices/technicxlargelinearmotor.js.map +0 -1
- package/dist/node/devices/tiltsensor.js +0 -63
- package/dist/node/devices/tiltsensor.js.map +0 -1
- package/dist/node/devices/trainmotor.js +0 -39
- package/dist/node/devices/trainmotor.js.map +0 -1
- package/dist/node/devices/voltagesensor.js.map +0 -1
- package/dist/node/hubs/basehub.js.map +0 -1
- package/dist/node/hubs/duplotrainbase.js +0 -62
- package/dist/node/hubs/duplotrainbase.js.map +0 -1
- package/dist/node/hubs/hub.js +0 -71
- package/dist/node/hubs/hub.js.map +0 -1
- package/dist/node/hubs/lpf2hub.js.map +0 -1
- package/dist/node/hubs/mario.js +0 -58
- package/dist/node/hubs/mario.js.map +0 -1
- package/dist/node/hubs/movehub.js +0 -73
- package/dist/node/hubs/movehub.js.map +0 -1
- package/dist/node/hubs/remotecontrol.js +0 -64
- package/dist/node/hubs/remotecontrol.js.map +0 -1
- package/dist/node/hubs/technicmediumhub.js +0 -69
- package/dist/node/hubs/technicmediumhub.js.map +0 -1
- package/dist/node/hubs/technicsmallhub.js +0 -68
- package/dist/node/hubs/technicsmallhub.js.map +0 -1
- package/dist/node/hubs/wedo2smarthub.js.map +0 -1
- package/dist/node/index-browser.d.ts +0 -1
- package/dist/node/index-browser.js +0 -121
- package/dist/node/index-browser.js.map +0 -1
- package/dist/node/index-node.js +0 -120
- package/dist/node/index-node.js.map +0 -1
- package/dist/node/interfaces.js +0 -3
- package/dist/node/nobleabstraction.js.map +0 -1
- package/dist/node/poweredup-browser.js.map +0 -1
- package/dist/node/poweredup-node.js.map +0 -1
- package/dist/node/utils.js +0 -102
- package/dist/node/utils.js.map +0 -1
- package/dist/node/webbleabstraction.js.map +0 -1
- package/docs/AbsoluteMotor.html +0 -2008
- package/docs/BaseHub.html +0 -1391
- package/docs/BasicMotor.html +0 -1459
- package/docs/ColorDistanceSensor.html +0 -3025
- package/docs/CurrentSensor.html +0 -1022
- package/docs/Device.html +0 -841
- package/docs/DuploTrainBase.html +0 -2092
- package/docs/DuploTrainBaseColorSensor.html +0 -1509
- package/docs/DuploTrainBaseMotor.html +0 -1479
- package/docs/DuploTrainBaseSpeaker.html +0 -1193
- package/docs/DuploTraniBaseSpeedometer.html +0 -871
- package/docs/Hub.html +0 -7451
- package/docs/HubLED.html +0 -1239
- package/docs/LPF2Hub.html +0 -2066
- package/docs/Light.html +0 -1239
- package/docs/Mario.html +0 -2092
- package/docs/MarioAccelerometer.html +0 -1215
- package/docs/MarioBarcodeSensor.html +0 -1215
- package/docs/MarioPantsSensor.html +0 -1022
- package/docs/MediumLinearMotor.html +0 -1357
- package/docs/MotionSensor.html +0 -1022
- package/docs/MoveHub.html +0 -2092
- package/docs/MoveHubMediumLinearMotor.html +0 -1357
- package/docs/MoveHubTiltSensor.html +0 -1045
- package/docs/PiezoBuzzer.html +0 -1057
- package/docs/PoweredUP.html +0 -4371
- package/docs/RemoteControl.html +0 -2092
- package/docs/RemoteControlButton.html +0 -1022
- package/docs/SimpleMediumLinearMotor.html +0 -871
- package/docs/TachoMotor.html +0 -2620
- package/docs/Technic3x3ColorLightMatrix.html +0 -1037
- package/docs/TechnicColorSensor.html +0 -1525
- package/docs/TechnicDistanceSensor.html +0 -1401
- package/docs/TechnicForceSensor.html +0 -1316
- package/docs/TechnicLargeAngularMotor.html +0 -2028
- package/docs/TechnicLargeLinearMotor.html +0 -2028
- package/docs/TechnicMediumAngularMotor.html +0 -2028
- package/docs/TechnicMediumHub.html +0 -2092
- package/docs/TechnicMediumHubAccelerometerSensor.html +0 -1068
- package/docs/TechnicMediumHubGyroSensor.html +0 -1068
- package/docs/TechnicMediumHubTiltSensor.html +0 -1696
- package/docs/TechnicSmallAngularMotor.html +0 -2028
- package/docs/TechnicXLargeLinearMotor.html +0 -2028
- package/docs/TiltSensor.html +0 -1045
- package/docs/TrainMotor.html +0 -1479
- package/docs/VoltageSensor.html +0 -1022
- package/docs/WeDo2SmartHub.html +0 -1887
- package/docs/consts.js.html +0 -728
- package/docs/devices_absolutemotor.js.html +0 -195
- package/docs/devices_basicmotor.js.html +0 -138
- package/docs/devices_colordistancesensor.js.html +0 -361
- package/docs/devices_currentsensor.js.html +0 -132
- package/docs/devices_device.js.html +0 -239
- package/docs/devices_duplotrainbasecolorsensor.js.html +0 -154
- package/docs/devices_duplotrainbasemotor.js.html +0 -89
- package/docs/devices_duplotrainbasespeaker.js.html +0 -117
- package/docs/devices_duplotrainbasespeedometer.js.html +0 -111
- package/docs/devices_hubled.js.html +0 -137
- package/docs/devices_light.js.html +0 -123
- package/docs/devices_marioaccelerometer.js.html +0 -127
- package/docs/devices_mariobarcodesensor.js.html +0 -135
- package/docs/devices_mariopantssensor.js.html +0 -111
- package/docs/devices_mediumlinearmotor.js.html +0 -89
- package/docs/devices_motionsensor.js.html +0 -115
- package/docs/devices_movehubmediumlinearmotor.js.html +0 -89
- package/docs/devices_movehubtiltsensor.js.html +0 -113
- package/docs/devices_piezobuzzer.js.html +0 -105
- package/docs/devices_remotecontrolbutton.js.html +0 -117
- package/docs/devices_simplemediumlinearmotor.js.html +0 -89
- package/docs/devices_tachomotor.js.html +0 -244
- package/docs/devices_technic3x3colorlightmatrix.js.html +0 -131
- package/docs/devices_techniccolorsensor.js.html +0 -149
- package/docs/devices_technicdistancesensor.js.html +0 -135
- package/docs/devices_technicforcesensor.js.html +0 -135
- package/docs/devices_techniclargeangularmotor.js.html +0 -89
- package/docs/devices_techniclargelinearmotor.js.html +0 -89
- package/docs/devices_technicmediumangularmotor.js.html +0 -89
- package/docs/devices_technicmediumhubaccelerometersensor.js.html +0 -115
- package/docs/devices_technicmediumhubgyrosensor.js.html +0 -115
- package/docs/devices_technicmediumhubtiltsensor.js.html +0 -183
- package/docs/devices_technicsmallangularmotor.js.html +0 -89
- package/docs/devices_technicxlargelinearmotor.js.html +0 -89
- package/docs/devices_tiltsensor.js.html +0 -113
- package/docs/devices_trainmotor.js.html +0 -89
- package/docs/devices_voltagesensor.js.html +0 -136
- package/docs/fonts/OpenSans-Bold-webfont.eot +0 -0
- package/docs/fonts/OpenSans-Bold-webfont.svg +0 -1830
- package/docs/fonts/OpenSans-Bold-webfont.woff +0 -0
- package/docs/fonts/OpenSans-BoldItalic-webfont.eot +0 -0
- package/docs/fonts/OpenSans-BoldItalic-webfont.svg +0 -1830
- package/docs/fonts/OpenSans-BoldItalic-webfont.woff +0 -0
- package/docs/fonts/OpenSans-Italic-webfont.eot +0 -0
- package/docs/fonts/OpenSans-Italic-webfont.svg +0 -1830
- package/docs/fonts/OpenSans-Italic-webfont.woff +0 -0
- package/docs/fonts/OpenSans-Light-webfont.eot +0 -0
- package/docs/fonts/OpenSans-Light-webfont.svg +0 -1831
- package/docs/fonts/OpenSans-Light-webfont.woff +0 -0
- package/docs/fonts/OpenSans-LightItalic-webfont.eot +0 -0
- package/docs/fonts/OpenSans-LightItalic-webfont.svg +0 -1835
- package/docs/fonts/OpenSans-LightItalic-webfont.woff +0 -0
- package/docs/fonts/OpenSans-Regular-webfont.eot +0 -0
- package/docs/fonts/OpenSans-Regular-webfont.svg +0 -1831
- package/docs/fonts/OpenSans-Regular-webfont.woff +0 -0
- package/docs/fonts/OpenSans-Semibold-webfont.eot +0 -0
- package/docs/fonts/OpenSans-Semibold-webfont.svg +0 -1830
- package/docs/fonts/OpenSans-Semibold-webfont.ttf +0 -0
- package/docs/fonts/OpenSans-Semibold-webfont.woff +0 -0
- package/docs/fonts/OpenSans-SemiboldItalic-webfont.eot +0 -0
- package/docs/fonts/OpenSans-SemiboldItalic-webfont.svg +0 -1830
- package/docs/fonts/OpenSans-SemiboldItalic-webfont.ttf +0 -0
- package/docs/fonts/OpenSans-SemiboldItalic-webfont.woff +0 -0
- package/docs/global.html +0 -3996
- package/docs/hubs_basehub.js.html +0 -469
- package/docs/hubs_duplotrainbase.js.html +0 -112
- package/docs/hubs_hub.js.html +0 -121
- package/docs/hubs_lpf2hub.js.html +0 -391
- package/docs/hubs_mario.js.html +0 -108
- package/docs/hubs_movehub.js.html +0 -123
- package/docs/hubs_remotecontrol.js.html +0 -114
- package/docs/hubs_technicmediumhub.js.html +0 -119
- package/docs/hubs_technicsmallhub.js.html +0 -118
- package/docs/hubs_wedo2smarthub.js.html +0 -265
- package/docs/icons/home.svg +0 -4
- package/docs/icons/search.svg +0 -4
- package/docs/poweredup-browser.js.html +0 -292
- package/docs/poweredup-node.js.html +0 -250
- package/docs/scripts/linenumber.js +0 -25
- package/docs/scripts/pagelocation.js +0 -89
- package/docs/scripts/prettify/Apache-License-2.0.txt +0 -202
- package/docs/scripts/prettify/lang-css.js +0 -2
- package/docs/scripts/prettify/prettify.js +0 -28
- package/docs/styles/collapse.css +0 -27
- package/docs/styles/jsdoc-default.css +0 -358
- package/docs/styles/prettify-jsdoc.css +0 -111
- package/docs/styles/prettify-tomorrow.css +0 -132
- 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
|
|
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
|
|
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
|
-
* @
|
|
205
|
-
* @param {
|
|
206
|
-
* @param {
|
|
207
|
-
* @
|
|
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
|
|
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
|
|
242
|
+
* @returns {Promise<CommandFeedback>} Resolved upon completion of the command.
|
|
248
243
|
*/
|
|
249
244
|
public setColor (color: number | boolean) {
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
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
|
-
* @
|
|
267
|
-
* @
|
|
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
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
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
|
package/src/devices/device.ts
CHANGED
|
@@ -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
|
|
18
|
-
protected
|
|
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.
|
|
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
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
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
|
|
182
|
-
|
|
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
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
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
|
|
20
|
+
* @returns {Promise<CommandFeedback>} Resolved upon completion of command.
|
|
22
21
|
*/
|
|
23
22
|
public playSound (sound: Consts.DuploTrainBaseSound) {
|
|
24
|
-
|
|
25
|
-
|
|
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
|
|
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
|
package/src/devices/hubled.ts
CHANGED
|
@@ -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
|
|
22
|
+
* @returns {Promise<CommandFeedback>} Resolved upon completion of command.
|
|
24
23
|
*/
|
|
25
24
|
public setColor (color: number | boolean) {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
return
|
|
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
|
|
46
|
+
* @returns {Promise<CommandFeedback>} Resolved upon completion of command.
|
|
49
47
|
*/
|
|
50
48
|
public setRGB (red: number, green: number, blue: number) {
|
|
51
|
-
|
|
52
|
-
|
|
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
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
return
|
|
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
|
|
package/src/devices/light.ts
CHANGED
|
@@ -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
|
-
* @
|
|
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 =
|
|
27
|
-
|
|
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
|
|
37
|
+
* @returns {Promise<CommandFeedback>} Resolved upon completion of command.
|
|
44
38
|
*/
|
|
45
39
|
public rampBrightness (fromBrightness: number, toBrightness: number, time: number) {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
.
|
|
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
|