2017-04-19 9 views
0

BLEで通知を実装するにはどうすればよいですか?BLEで通知を実装する

私はスマートフォンを持っており、1時間ごとに、近くのすべてのBLEデバイス(スマートウォッチ、RFduinoなど)に時刻同期のための通知を送信します。

他のデバイスはサーバーであり(データを提供するため)、スマートフォンはデータを収集するクライアントです。

広告パッケージにピギーバックできますか?たとえば、スマートフォンは、広告パケットを常にブロードキャストして、その存在(他のデバイスがそれを見つける方法)を知らせる。そのパケットをタイムシンクに変更することはできますか?

答えて

1

通知または広告を送信するには、スマートフォンがサーバとして機能する必要があります。これは、通知を受信したり、広告をスキャンしたりするために、周辺機器がクライアントとして動作する必要があることを意味します。

これは、2つのデバイスがクライアントとサーバーとして機能する場合、もう一方の役割を同時に果たしていない可能性があるため、ややこしいことがあります。必要に応じていつでも役割を切り替える必要があります。これはあらゆる種類の問題のオープン・フィールドです。

また、スマートフォンが定期的に近隣のすべてのデバイスに通知することが最適な選択であるとは確信していません。通知を受信するデバイスのそれぞれは、通知を受信するためにデバイスに接続されていなければなりません。この接続は、実際に正しい時刻を取得するために通知が送信された時点ですでにアクティブでなければなりません。したがって、これらすべてのデバイスは、予期される通知時間に事前に接続し、通知が来るまで接続を保留する必要があります。

現在の時刻を広告するだけの方が良いかもしれませんが、リンク層がスキャンと広告モードに同時にないので、スマートフォンが広告中にサーバーとして接続できないことに注意してください同様の理由で広告を掲載する際には、接続しないこともあります。

このようにしたい場合は、広告データに時間情報を含めることができます。広告データの構造の詳細については、Bluetoothコア仕様v6のパートAを参照してください。あなたはそれを製造業者固有のデータに入れることができます。

ただし、書き込み要求を使用してデバイスに直接時刻を書き込むこともできます。独自のサービスと特性を定義することができます。サーバーの広告データに「時間同期必要」情報を含めることができます。スマートフォンが広告を評価すると、対応するデバイスに接続して時刻を直接送信できます。

この手順の利点は、デバイス上に本当に必要な場合にのみ時刻が更新され、クライアント/サーバーの役割を切り替える必要がないことです。サーバーロール内のデバイスが通常通りに広告を出す可能性があるためです。スマートフォンは常にクライアントの役割にとどまることができます。

関連する問題