From 65a1fbc450a179202b0347a3c18f52247f252a5a Mon Sep 17 00:00:00 2001 From: Christian Sarnataro Date: Thu, 27 Jan 2022 15:59:29 +0100 Subject: [PATCH 1/3] Added support for Web Serial API on Chromebooks Added CDC reset in web serial api daemon. Bumped version to 2.8.0 --- .npmrc | 0 README.md | 8 + demo/app.jsx | 19 +- demo/v2/install_tool.jsx | 14 +- demo/v2/v2.jsx | 20 +- package-lock.json | 11503 ++++++++++--------------------------- package.json | 14 +- rollup.config.js | 5 +- src/chrome-app-daemon.js | 18 +- src/chrome-os-daemon.js | 67 + src/daemon.js | 16 + src/firmware-updater.js | 2 +- src/index.js | 2 +- src/signatures.js | 1 - src/web-serial-daemon.js | 106 + webpack.config.js | 5 +- 16 files changed, 3282 insertions(+), 8518 deletions(-) create mode 100644 .npmrc create mode 100644 src/chrome-os-daemon.js create mode 100644 src/web-serial-daemon.js diff --git a/.npmrc b/.npmrc new file mode 100644 index 00000000..e69de29b diff --git a/README.md b/README.md index 2cceba97..3dafef2a 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,14 @@ # arduino-create-agent-js-client JS module providing discovery of the [Arduino Create Agent](https://github.com/arduino/arduino-create-agent) and communication with it + +## Changelog +[2.8.0] - 2022-03-21 + +### Added +- Added support (still in Beta) for Chrome's Web Serial API on ChromeOS. + Other operating systems should not be affected. + ## Installation ```bash diff --git a/demo/app.jsx b/demo/app.jsx index 92c6ba7d..1de7aa89 100644 --- a/demo/app.jsx +++ b/demo/app.jsx @@ -27,6 +27,8 @@ import V2 from './v2/v2.jsx'; const chromeExtensionID = 'hfejhkbipnickajaidoppbadcomekkde'; +const isChromeOs = () => window.navigator.userAgent.indexOf(' CrOS ') !== -1; + const scrollToBottom = (target) => { if (target) { target.scrollTop = target.scrollHeight; // eslint-disable-line no-param-reassign @@ -151,6 +153,17 @@ class App extends React.Component { } } + requestDevicePermission = () => { + if ('serial' in navigator) { + navigator.serial.requestPort([{ usbVendorId: 0x2341 }]).then((port) => { + daemon.devicesList.next({ + serial: [port], + network: [] + }); + }); + } + }; + showError(err) { this.setState({ error: err }); scrollToBottom(document.body); @@ -275,8 +288,10 @@ class App extends React.Component {
-

Connected Devices

- +
+

Connected Devices

+ { isChromeOs() && } +
serial: