Commit graph

257 commits

Author SHA1 Message Date
Eric Rosenbaum
9df078b606
Remove branding from translate extension (#1569)
* Remove branding from translate extension

* Thoroughly remove block icon
2018-09-11 15:19:19 -04:00
Evelyn Eastmond
ec432e3b2f Refactor for hardware extensions (#1555)
* Beginning refactor: renaming 'device' to 'peripheral', shortening function names, reordering functions, etc.

* Continuing refactoring: renaming some functions to be more verbose in the runtime, adding JSDocs, etc.

* Changing 'device' to 'peripheral', etc.

* Changing 'session' to 'socket'.

* Fixing EV3 menus and menu arg validation, reordering functions, etc.

* Add _send, add some references to documentation, etc.

* Factored out _outputCommand and _inputCommand, renamed some enums, etc.

* Fixed _outputCommand, some other minor cleanup.

* Make _outputCommand and _inputCommand public.

* Added TODO.

* Renamed BLE UUID enums to be clearer.

* Change WeDo2 in comments to WeDo 2.0, etc.

* Changed some WeDo2Motor command names, cleaned up some JSDocs.

* Beginning a major EV3 refactor.

* WeDo2 formatting and comment changes.

* Motor refactoring in EV3: motorTurnClockwise and motorTurnCounterClockwise initial working state.

* Add reminders to possibly cast motor menu args in WeDo2.

* Continue to move motor commands in EV3 to EV3Motor class, don't create new EV3Motor on every poll cycle, etc.

* Factoring EV3 polling value commands, etc.

* Fixing EV3 motor power, position and button pressed, and some commenting, etc.

* Move EV3 motor position parsing to EV3Motor class, move directCommand and directCompoundCommand functions, some commenting, etc.

* Changed WeDo2 motor label enum name.

* Removed some EV3 motor functions that aren't needed, changed menu label enum names, moved some opcodes up to enums.

* Fixing comments and documentation.

* Some commenting.

* Adding further documentation and references to PDFs, changed reply check to be safer, etc.

* Some comment changes.

* Moving some functions around in EV3 and WeDo2 to match.

* Commenting, etc.

* Some renaming of session, etc.

* Fix stopAllMotors in EV3.

* Fixing clearing of motors in EV3.

* Some comment changes.

* Change runtime .extensions/registerExtension to .peripheralExtensions/registerPeripheralExtension.

* Renaming outputCommand/inputCommand to generateOutputCommand/generateInputCommand, etc.

* Moved motorCommandIDs to EV3Motor class, renamed directCommand to generateCommand, etc.

* Adding a reminder to rename something.

* JSDoc fix in EV3Motor class.

* Fixing microbit function name.

* Adding a todo item.

* Changing Ev3 menu formats to be backwards compatible, moving a BLE function up.

* Fixing EV3 ports again, and button pressed returning a boolean.

* Fixing menu value to be a string in EV3.
2018-09-07 17:01:23 -04:00
Eric Rosenbaum
36711931b2 Make a constant for speech volume 2018-09-05 18:36:01 -04:00
Eric Rosenbaum
fe746a7c43 Use map of soundPlayers for stop all 2018-09-04 21:12:45 -04:00
Eric Rosenbaum
fb7c293e71 Set volume of speech using effect chain 2018-09-04 21:12:04 -04:00
Eric Rosenbaum
5dfa4cc691 Text2speech set gain to 2 (6db) 2018-08-31 10:47:36 -04:00
Eric Rosenbaum
39be6d873c
Rate-limiting with a token bucket for the WeDo extension (#1540)
* Initial version of token bucket

* Add rateLimiter util

* Remove check for motor.isOn in stopAllMotors

* Fix unit test

* Fix unit test with stubbed timer, and cleanup

* Add comment

* Reduce WeDo rate limit to 20 sends/sec

* Move rate limit into a constant

* Stop button stops motors and tone even if rate limit exceeded
2018-08-29 17:37:59 -04:00
picklesrus
b95b8d41ff Fix #1395 by resetting the utterance we check for in the edge trigger hat on green flag (#1476) 2018-08-27 11:10:51 -04:00
picklesrus
b9a757ea08 Fix speech extension in Safari (#1202) by calling getUserMedia for every listen and wait block rather than trying to reuse it. Also get rid of some code that was not actually doing anything. (#1467) 2018-08-27 11:05:51 -04:00
Evelyn Eastmond
5320dfb676 WeDo2 backwards compatibility update (#1518)
* Resolving #1492: No longer trying to make WeDo2 backwards compatible with Scratch Link API v1.0.

* Closing the socket on all BLE/BT errors.

* Adding BT disconnection.
2018-08-22 17:45:26 -04:00
Eric Rosenbaum
d6831cf97d
Merge branch 'develop' into wedo2-fixes 2018-08-22 16:01:29 -04:00
Evelyn Eastmond
ab7f24bf9a WeDo2 rate limiting (#1509)
* Starting work on #1456: rate limiting.

* Fixing #1456: rate limit send messages.

* Chaining a couple of send operation Promises.

* Fixing linting.
2018-08-22 15:53:17 -04:00
Evelyn Eastmond
1f7d9d3b67 Revert "Attempting to fix #1492: WeDo2 use of should be backwards compatible."
This reverts commit ae28a0c1b86209c66dcdbe9b10e0df8c39be7e10.
2018-08-22 11:17:31 -04:00
Evelyn Eastmond
bfa4dfaac2 Attempting to fix #1492: WeDo2 use of should be backwards compatible. 2018-08-22 11:17:31 -04:00
Evelyn Eastmond
f4e9212249 Fixing #1504: WeDo2: Distance sensor not being cleared on device disconnect. 2018-08-22 11:17:31 -04:00
Evelyn Eastmond
3659973101 Fixing #1510: WeDo2 stop button gives console error if device not connected. 2018-08-22 11:17:31 -04:00
Evelyn Eastmond
2121a3be80 Some small EV3 fixes (#1494)
* Fixing #1353: Stop button should stop EV3 beep sound.

* Fixing #1358: EV3 and Microbit: shouldn't send requests if not connected?.

* Fixing #1373: EV3 motor does not brake at the end of a motor command.
2018-08-20 11:00:48 -04:00
Evelyn Eastmond
5395f9c321 WeDo2 changes for upcoming smoke test (#1493)
* Starting on #1491: use 'startNotifications' instead of 'read'.  Still need to make backwards compatible.

* Fixing #1489: WeDo2 set light color block should wrap values to 0-100.

* Fixing #1488: WeDo2 should not clear LED light on stop button.

* Fixing to support negative LED light color inputs.

* Removing a binding.

* Using wrapClamp for inputHue for LED color block.
2018-08-19 22:09:57 -04:00
Eric Rosenbaum
83b3eabf1d
Regulate micro:bit send timing (#1471)
* display blocks yield for 50ms

* WIP on microbit command send timing

* WIP on microbit command send timing

* Cleanup and JSDOC

* Send “withResponse” param to Link

* Remove caching, add busy timeout
2018-08-16 15:38:03 -04:00
Eric Rosenbaum
825035f503
Fix importing WeDo 2.0 blocks from SB2 (#1487)
* Fix wedo2 import from sb2

* Hide wedo play note block
2018-08-16 14:24:19 -04:00
Evelyn Eastmond
0df334fd38 Fixes #1423: WeDo commands should be able to be translated. (#1482) 2018-08-15 14:21:42 -04:00
Evelyn Eastmond
280be8379b
Merge pull request #1481 from evhan55/feature/wedo2-fixes
Various WeDo2 fixes and enhancements
2018-08-15 14:11:04 -04:00
Evelyn Eastmond
35a2411f92 Fixing motor direction block to also work when the motor is on indefinitely. 2018-08-15 14:01:08 -04:00
Evelyn Eastmond
c21d5eba1c
Merge pull request #1469 from ericrosenbaum/feature/wedo-icon
Add WeDo 2.0 block icon
2018-08-15 12:01:48 -04:00
Evelyn Eastmond
9fb522b3ff Moving a function. 2018-08-15 11:39:26 -04:00
Evelyn Eastmond
13edf16caa Fixing #1457: extension should parse incoming messages using port table. 2018-08-15 11:39:26 -04:00
Evelyn Eastmond
d61f6e3d6f Fixing #1460: 'set motor direction' block should work while a motor is running. 2018-08-15 11:39:26 -04:00
Evelyn Eastmond
3023b7a9c2 Fixing #1455: set LED to blue on connecting. 2018-08-15 11:39:26 -04:00
Evelyn Eastmond
9f25872c1f Fixing #1454: extension should cast and clamp input values. 2018-08-15 11:39:26 -04:00
Evelyn Eastmond
d89020cfb1 Fixing #1461: distance sensor should report 0-100 in steps of 10. 2018-08-15 11:39:26 -04:00
Connor Hudson
f9814a5f88 Allow localizing EV3 blocks (#1437)
* Add formatMessage calls to block text in EV3 extension

* Make some EV3 l10n descriptions more descriptive
2018-08-14 14:36:19 -04:00
Eric Rosenbaum
3af8a4eca5 Add WeDo 2.0 block icon 2018-08-14 13:51:17 -04:00
Connor Hudson
8d88058ae5 Allow localizing micro:bit blocks (#1431)
* Replace micro:bit block text with formatMessage calls

* Add l10n support to micro:bit block menus

* Remove A, B button translation, update some l10n descriptions

* Fix mismatched l10n description
2018-08-14 12:19:26 -04:00
Evelyn Eastmond
f01733f019 WeDo2 Extension: First Pass (#1441)
* Adding WeDo2 connection/disconnection over Scratch Link BLE.

* Testing motor and LED output.

* Reading sensor attachment and registering for sensor notifications.

* Motor indexing.

* Some refactoring notes.  Moving some functions around.

* Refactoring and enums.

* Removing some comments

* Fixing linting error.

* Fixing tilt reporter values and added stopAll bound to stop button to stop piezo, LED and motors.
2018-08-13 17:10:55 -04:00
Ray Schamp
4b5cf6505a
Merge pull request #1398 from paulkaplan/publish-docs
Publish jsdoc to gh-pages
2018-08-08 16:46:48 -04:00
Eric Rosenbaum
c8158321fc
Add "set voice" block to text2speech extension (#1400)
* Add set voice block

* Store voice in custom state

* Use a regex to preserve punctuation in kitten language

* cleanup

* don’t re-use args

* add todo comment about locale

* Use voice Id strings and add puppy

* Cleanup and comments

* Use extension name “Text-to-Speech”

* Add issue link in comment
2018-07-31 14:41:02 -04:00
Paul Kaplan
138d7136af Fix various jsdoc issues preventing the docs from building 2018-07-31 11:22:42 -04:00
Evelyn Eastmond
6444cf071d Feature/critical extension fixes (#1383)
* Resolves - Turning micro bit power off doesn't disconnect microbit #1366.

* Resolves EV3 motor block causes distance to return 0 #1363.

* Fixing linting.

* Tweak micro:bit auto-disconnect timeout.
2018-07-24 11:08:48 -04:00
Eric Rosenbaum
f5066626e5
Use sprite’s soundbank to play text2speech sound (#1388)
* Use sprite’s soundbank to play sound

* Add todo comment
2018-07-23 11:16:00 -04:00
picklesrus
db0597ada5 Get rid of some config that Safari cannot handle and was part of the older getUserMedia. (#1297) 2018-07-23 10:45:27 -04:00
Paul Kaplan
4570184c6b Fix linting 2018-07-19 16:41:07 -04:00
Paul Kaplan
a762892879 Do not send coast if another motor command has been sent 2018-07-19 15:46:01 -04:00
Andrew Sliwinski
cf2b858d43 Change 'video motion' to 'video sensing'. See LLK/scratch-gui#2621 2018-07-18 10:11:08 -04:00
Kreg Hanning
9524db5609 Only send matrix data if input !== null (#1356) 2018-07-17 16:12:38 -04:00
Kreg Hanning
2af04c43ea Ignore display command with blank string (#1355) 2018-07-17 16:09:12 -04:00
Evelyn Eastmond
c4ee7065a2 EV3/Microbit critical fixes for code freeze (#1354)
* Resolves - BLESession and BTSession should emit PERIPHERAL_SCAN_TIMEOUT #1348.

* Resolves - BLESession should handle 'could not find service' error #1350.

* Resolves - BTSession should handle 'no peripheral connected' error #1351.

* Fixing a typo that caused device scan timeout bugs.

* Resolves - Add casting and clamping throughout the EV3 extension #1352.

* Fixing a linting error.

* Further fixes for issue #1351.
2018-07-17 16:03:05 -04:00
Eric Rosenbaum
b8ea846eed
Use 2x png for microbit icon (#1346)
* Use file-loader for png

* Use 2x png for microbit block icon

* Load png via data URI

* JSDOC
2018-07-17 09:21:44 -04:00
picklesrus
bf22cdbf13 Make the end listening sound only play one time even if multiple bloc… (#1232)
* Make the end listening sound only play one time even if multiple blocks stop listening at the same time.

* Update for new sound API
2018-07-15 15:04:27 -04:00
picklesrus
ed78231fe9 Turn speech block text into i18n messages. (#1224)
* Turn speech block text into i18n messages.

* Update message descriptions and other code review comments.

* fix typo

* Add bit about not translating Google to message description.

* Change default when I hear text
2018-07-15 14:34:24 -04:00
picklesrus
bd83d66bff Update speech extension to use new audio engine api since the old version no longer exists. (#1272) 2018-07-15 14:23:14 -04:00
Evelyn Eastmond
133ade7f48 EV3 port and sensor polling updates (#1342)
* Add motor rotate, without coasting yet.  Fixed some todos.

* Removing logging.

* Implemented motor set position, motor set power, and beep note for time blocks.  Changed labels on motor blocks.  Tracking motor speeds for all ports.

* Fixing motor ports to 0-3 and then output bit field when sending commands.

* Added stop all motors with stop button.  Added port masking function.  Some cleanup.  Moved beeping up an octave.

* Combine device list polling and sensor polling into a single timeout call, device list requested every 20 times.

* Don't reset sensors on device update.  Don't store undefined sensor/motor values.  Some comments.

* Fixing some linting.
2018-07-13 13:14:53 -04:00
Andrew Sliwinski
c69a59575d
Merge pull request #1316 from ericrosenbaum/feature/language-reporter
Change translate extension reporter block text to 'language'
2018-07-13 08:41:33 -04:00
Paul Kaplan
ec0ac19772
Merge pull request #1332 from ericrosenbaum/bugfix/microbit-bail-out
Microbit write bails out if not connected
2018-07-13 08:32:58 -04:00
Eric Rosenbaum
eaeefdcfe7 Change extension name to micro:bit 2018-07-12 15:26:32 -04:00
Eric Rosenbaum
ea1bb602f9
Microbit display commands yield for a tick (#1331)
* Microbit display commands yield for a tick

* JSDOC fixes
2018-07-12 15:19:28 -04:00
Eric Rosenbaum
a7f4fc2212 Microbit write bails out if not connected 2018-07-12 14:41:28 -04:00
Kreg Hanning
06c4e5516f Add micro:bit matrix field block (#1314)
* Add micro:bit matrix field block

* Remove debug logs

* Remove rowcol menu

* Fix lint errors
2018-07-11 16:13:49 -04:00
Paul Kaplan
31cd204117 Add semicolons... 2018-07-11 11:47:29 -04:00
Paul Kaplan
eecca39a97 Update microbit block and menu icons using the new ones 2018-07-11 11:20:19 -04:00
Eric Rosenbaum
0cc219fa0a Change ‘viewer language’ reporter to ‘language’ 2018-07-10 15:10:27 -04:00
picklesrus
e156b0536c Fix name of translate extension and add the logo back. Basically fixes #1029 (#1313) 2018-07-10 10:25:49 -04:00
Andrew Sliwinski
c9d71488c3
Merge pull request #1311 from thisandagain/feature/polly
Update text-to-speech extension to use new audio engine
2018-07-10 08:30:52 -04:00
Andrew Sliwinski
ace5ae40d0 Update text-to-speech extension to use new audio engine 2018-07-09 14:40:13 -04:00
Evelyn Eastmond
394b57ebb6 Removing some logging. 2018-07-09 14:31:09 -04:00
Evelyn Eastmond
f511730602 Fix motor turn for ports C/D. Zero out sensors and motor values on disconnect. 2018-07-09 14:31:09 -04:00
Evelyn Eastmond
a220829007 Changes to EV3 extension: motor reporter 0-360, distance reporter rounded to tenths, motors coasting after turn for time commands, buttons distinguishable by port, and motor reporters for ports C/D fixed. 2018-07-09 14:31:09 -04:00
Eric Rosenbaum
b30092e890 Motor for time opcodes return promise to wait 2018-07-09 13:49:41 -04:00
Eric Rosenbaum
a78866f99a Add EV3 block icon 2018-07-09 13:49:41 -04:00
Eric Rosenbaum
2cfc6d601a Fix required module name to lowercase 2018-07-09 13:49:41 -04:00
Evelyn Eastmond
190f4b5796 Fixing linting errors. 2018-07-09 13:49:41 -04:00
Eric Rosenbaum
2ec894b5a7 Get motor positions for reporter block 2018-07-09 13:49:41 -04:00
Evelyn Eastmond
b9ea6005f8 Clearing ports on disconnect. 2018-07-09 13:49:41 -04:00
Evelyn Eastmond
cf98e35564 EV3 blocks progress: distance, brightness, button, motor position. Only single button for now, distance needs threshold at 0. 2018-07-09 13:49:41 -04:00
Eric Rosenbaum
387f03b08c Add disconnect and getPeripheralIsConnected to EV3 extension 2018-07-09 13:49:41 -04:00
Eric Rosenbaum
6f5ff31eb3 Add disconnectExtensionSession and getPeripheralIsConnected 2018-07-09 13:49:41 -04:00
Evelyn Eastmond
613a9f96c3 Adding initial test polling for EV3 distance sensor data. 2018-07-09 13:49:41 -04:00
Evelyn Eastmond
0280966a61 Connected Ev3 extension to device connection modals. 2018-07-09 13:49:40 -04:00
Evelyn Eastmond
d1d9b38bf9 Added all EV3 block commands/reporters/booleans to Ev3 device class as stubbed functions. 2018-07-09 13:49:40 -04:00
Evelyn Eastmond
42e0576549 All EV3 blocks stubbed out with console logs for now. 2018-07-09 13:49:40 -04:00
Evelyn Eastmond
2d8ad05a78 Adding Ev3 extension with three test blocks to latest device-connection work, auto-connecting to device for now. 2018-07-09 13:49:40 -04:00
Evelyn Eastmond
4332725d33 Adding more errors based on web socket onerror and onclose. Moved extension runtime mapping of devices back to MicroBit class. 2018-07-09 13:41:57 -04:00
Evelyn Eastmond
73cc149783 Adding promises to return on BLE write. Some refactoring. 2018-07-09 13:41:57 -04:00
Evelyn Eastmond
730b798686 Extension/runtime protocol refactoring. 2018-07-09 13:41:57 -04:00
Eric Rosenbaum
d778ddf00e wip 2018-07-09 13:41:57 -04:00
Michael "Z" Goddard
0dffc65ce9 stop drum immediately if it is still starting (#1266) 2018-06-25 15:31:35 -04:00
Ray Schamp
9afe401dca Revert "Revert #1260, #1258, #1239"
This reverts commit 28f90648b0.
2018-06-22 09:33:08 -04:00
Ray Schamp
28f90648b0 Revert #1260, #1258, #1239
This reverts commits
c268bbae47
61dacfc915
30b8cb8eb1
2018-06-22 09:30:17 -04:00
Michael "Z" Goddard
61dacfc915
Merge pull request #1258 from mzgoddard/green-music-extension
Use new scratch-audio APIs in music extension
2018-06-21 16:59:42 -04:00
Michael "Z" Goddard
7e48bed0ab
use scratch-audio EffectChain and SoundPlayer in music extension
- Use AudioEngine to decode sounds
- Store players instead of buffers
- Use SoundPlayer stop event to track concurrency
2018-06-21 16:53:45 -04:00
chrisgarrity
f0951d16fa
Merge pull request #1246 from chrisgarrity/feature/translate-labels
Localize category labels
2018-06-20 08:33:44 -04:00
Evelyn Eastmond
d09c3f0418 MicroBit extension, Scratch Link first draft. (#1230)
* First microbit gui tests

* Fixed JSONRPC inheritance.  Renamed ScratchBLE/ScratchBT files.  Removed ScratchBT test code from Microbit extension.  Renamed addLine to log.

* Fixed log comments.  Removed addLine from Microbit.

* Adding auto-connect to Microbit at extension loading.  Adding hack for displayText block to Scratch-Link.

* Resolved merge conflicts and brought in latest microbit extension example code.

* Updated microbit write tests for displayText and displaySymbol blocks.  Some linting.

* Some linting and adding of BLE Characteristic consts.

* Linting fixes.

* Moving micro:bit device connection code all to the MicroBit class, decoupling Scratch3MicroBitBlocks from connection code.

* Removing old disconenct handlers from MicroBit class.  Moved service into new BLEUUID data structure.

* Renamed _write to _send.  Moved all BLE encoding concerns to the _send method.

* Using the util log.  Some linting.

* Added _read method to MicroBit class.  Renamed _send to _write.

* Some linting and formatting comments.

* First pass at peripheral chooser pattern for ScratchBLE.

* Testing characteristicDidChange events, and some changes to ScratchBLE on ready events.

* Refactoring work on PeripheralChooser and ScratchBLE.

* Some variable renaming and method signature stubs.

* Peripheral chooser method signatures.

* Moved base64 encoding/decoding to util.  Some method signature formatting.

* Adding test stubs for new util and io classes.

* Adding test stub for MicroBit extension.

* Clean up for PR.

* Clean up for PR.

* Final cleanup for PR.

* Removed logging to console.

* Adding 'btoa' and 'atob' node modules and using them in Base64Util.
2018-06-18 14:56:51 -04:00
chrisgarrity
1e3907e922 Localize category labels
Added formatMessage to the name attribute for:
* music
* pen
* translate
* video motion

Skipped speak extension - trademarked name
Skipped extensions that are not yet localized at all.
2018-06-18 11:37:10 -04:00
Eric Rosenbaum
c2b262ba97 Add status button to microbit extension 2018-06-13 15:53:05 -04:00
Eric Rosenbaum
78074ec575
Merge pull request #1222 from picklesrus/speech-extension-icons
Speech extension icons
2018-06-11 09:50:42 -04:00
picklesrus
97b8ec83bd Ignore lint for the icons 2018-06-08 14:45:13 -07:00
picklesrus
6184c3ba12 Replace icons with version downloaded from https://material.io/tools/icons/?style=baseline 2018-06-08 14:42:46 -07:00
Ray Schamp
7de83bea07
Merge pull request #1215 from picklesrus/speech-extension-audiocontext
Add webkitAudioContext if AudioContext does not exist. This might fix…
2018-06-07 10:53:45 -04:00
picklesrus
391f47d100 Add webkitAudioContext if AudioContext does not exist. This might fix the speech extension in safari, but it is tricky to tell since I am running into problems with permissions and localhost. 2018-06-06 16:49:46 -07:00
Eric Rosenbaum
332e90e408
Merge pull request #1208 from ericrosenbaum/feature/increase-pen-size
Increase maximum pen size to 1200
2018-06-06 10:16:15 -04:00
Andrew Sliwinski
bccdef0674 Future-proof opcode and fix issues with copied comments 2018-06-05 18:32:02 -04:00