Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

I2C ポートを開放したい #75

Open
dynamis opened this issue Aug 15, 2019 · 0 comments
Open

I2C ポートを開放したい #75

dynamis opened this issue Aug 15, 2019 · 0 comments
Labels
bug enhancement polyfill WebAPI polifill 関連

Comments

@dynamis
Copy link
Contributor

dynamis commented Aug 15, 2019

現在の API と polyfill 実装では同一ポートの GPIO/I2C アクセスは競合が発生して最初に接続したアプリ (ページ) だけが利用可能になる。GPIO は unexport() が用意されており占有する必要が無くなったら解放できるが I2C ではポート (の配下の I2CSlaveDevice との通信) を開放する為の手段が用意されていないように思う。そのアプリを終了して WebSocket 接続を切断するしかなさそう。

特に i2c-detect などはスキャン時以外は占有せずにすぐに解放する実装にしたいが現状ではできなさそうに思う。

ちなみに単純に unexport() 的なもの以外には、使われなくなったら自動的に解放するという設計も本来はアリ (実装できるかはともかく)。

ハードデバイスを占有するという類似性のある getUserMedia では取得した Stream の track を全て停止した上で videoElem.srcObject への stream の関連付けを切ることで解放できるというちょっと面白挙動:

https://developer.mozilla.org/ja/docs/Web/API/MediaStreamTrack/stop

function stopStreamedVideo(videoElem) {
  let stream = videoElem.srcObject;
  let tracks = stream.getTracks();

  tracks.forEach(function(track) {
    track.stop();
  });

  videoElem.srcObject = null;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug enhancement polyfill WebAPI polifill 関連
Projects
None yet
Development

No branches or pull requests

1 participant