問題タブ [iobluetooth]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
2767 参照

ios - CBCentralManagerScanOptionSolicitedServiceUUIDsKey の目的

このCBCentralManagerScanOptionSolicitedServiceUUIDsKeyオプションは、CoreBluetooth でデバイスをスキャンするときに使用できます。ドキュメントには次のように記載されています。

このスキャン オプションを指定すると、セントラル マネージャは、アレイに含まれるサービスを要求する周辺機器もスキャンします。

このオプションの目的は何ですか? 「依頼サービス」とは?サービス配列でサービス UUID を指定するのとどう違うのですか?

0 投票する
1 に答える
1195 参照

macos - blued は ATT 値をキャッシュしますか? また、キャッシュをクリアする方法は?

OSX の Bluetooth LE バグの回避策を見つけようとしています。特に、Bluetooth LE GATT テーブルの読み取りで OSX がどこで問題を起こすかを知りたいです。したがって、 XCode の Hardware IO Tools から PacketLogger でL2CAP パケットを表示しています。

Bluetooth Explorer を使用して Bluetooth LE デバイスに接続すると、3.4.4.9 Read By Group Type Request (uuid=0x2800 «Primary Service»、startingHandle=0x0001、endingHandle=0xffff) が表示され、プライマリ サービスが検出される (または検索される) と予想されます。 Type Value Request (uuid=0x2800, value:uuid of service))、続いて 3.4.4.1 Read By Type Request (uuid=0x2803 «Characteristic») で特性を発見します。これは、(CC2540 を使用して) iPhone からパケットを盗聴したときに表示されるものです。

しかし、OSX では、接続後に PacketLogger (および CC2540) に表示される L2CAP リクエストは次のとおりです。

  1. タイプ要求による読み取り(attributeType=0x2803、startingHandle=0x001a、endingHandle=0x001a)
  2. Read By Type Request (attributeType=0x2802 «Include»、startingHandle=0x0001、endingHandle=0x0004)
  3. タイプ別読み取りリクエスト(attributeType=0x2802、startingHandle=0x0005、endingHandle=0x0009)
  4. タイプ要求による読み取り(attributeType=0x2802、startingHandle=0x0010、endingHandle=0x0019)
  5. Read By Type リクエスト(attributeType=0x2802、startingHandle=0x001a、endingHandle=0x001a)
  6. タイプ要求による読み取り(attributeType=0x2803、startingHandle=0x001a、endingHandle=0x001a)
  7. Read By Type リクエスト(attributeType=0x2802、startingHandle=0x0021、endingHandle=0x0027)
  8. タイプ要求による読み取り(属性タイプ = 0x2802、開始ハンドル = 0x002b、終了ハンドル = 0x002e)

これらはサービスを検出するのに十分な要求ではありませんが、Bluetooth Explorer はこの時点ですべてのサービス UUID を一覧表示します。これは、OSX がこの Bluetooth LE デバイス上のサービスの場所を既に認識していることを示しています。blued はデバイス サービスをキャッシュし、起動時にそれらを読み取りますか? もしそうなら、どうすればキャッシュをクリアできますか?

Bluetooth をオフにし、blued を強制終了し、OSX を再起動しようとしましたが、OSX がサービスを再検出するたびに。

0 投票する
0 に答える
607 参照

macos - How to enable blued Core Bluetooth XPC logging in OSX 10.9.2

Is there any way to re-enable logging of blued Core Bluetooth XPC messages?

In OSX 10.9.1, the system log contains messages that look like the listing below when I am using IOBluetooth to speak to a Bluetooth LE device. However, in OSX 10.9.2 (2014-02-25), the system log does not contain these messages anymore when I am using IOBluetooth. Is there any way to re-enable blued RPC logging, so I can at least get a little more information when trying to diagnose bugs?

0 投票する
2 に答える
3369 参照

ios - iOS 入力 マイク出力 Bluetooth デバイス

マイクから入力を取得し、audioRouteOverride を使用して Bluetooth デバイスに出力しようとしています。しかし運が悪い。iPhone のマイク出力は引き続き iPhone の内蔵スピーカーに送られます。ここで kAudioSessionOutputRoute_BluetoothA2DP が鍵になると予想しました。しかし、期待どおりに機能していません。

以下は私が使用しているコードです:

0 投票する
1 に答える
2719 参照

macos - 結合を削除せずに CoreBluetooth GATT キャッシュをクリアする

CoreBluetooth フレームワークを使用して、周辺機器として機能する iOS アプリと中央として機能する OS X アプリがあります。OS X アプリは iOS アプリに接続し、暗号化された特性を読み取ってランダムなコードを入力することで結合します。iOS アプリを再起動するまでは、すべて正常に動作します。それ以降、iOS デバイスに接続してその特性を読み取ろうとするたびに、「ハンドルが無効です」というエラーが返されます。これを修正する唯一の方法は、OS X の Bluetooth 設定からデバイスを削除し、結合プロセスを再開することです。

この問題は、デバイスのサービスと特性の OS X によるキャッシュが原因であると思われます。2 つの iOS デバイスを使用して 1 つを再起動した後に相互に接続している場合、問題は発生しません。

私が探しているのは、サービスと特性の OS X のキャッシュをクリアする方法です。com.apple.Bluetooth.plist を削除して blued プロセスを再起動/Bluetooth をオン/オフする方法に精通しています。( Bluedは ATT 値をキャッシュしますか? また、キャッシュをクリアする方法は?およびMacOS で CoreBluetooth キャッシュをクリアするにはどうすればよいですか? )

ただし、com.apple.Bluetooth.plist を削除するには、iOS デバイスに再度接続してコードを入力する必要があります。キャッシュをクリアする方法はありますが、アプリに関連するサービス/特性でのみそうしますか?

0 投票する
1 に答える
12924 参照

macos - Swift で Bluetooth デバイスの範囲内にあるデバイスを一覧表示する

Xcode 6 プレイグラウンドに次のコードがあります。

OSX で Bluetooth を使い始めたばかりで、現在必要なのは範囲内のデバイスのリストだけです。

私のデリゲートメソッドをまったく呼び出していないようです。

私は OSX 開発と Swift の初心者なので、優しくしてください。:)