BLED112 を iBEacon のように動作させ、さらにいくつかの GATT サービスを宣伝しようとしています。Bluegiga の例のように iBeacon のユーザー データをアドバタイズすることはできますが、利用可能な GATT サービスのリストもアドバタイズする方法がわかりません。どんなアイデアでも大歓迎です!
2 に答える
1 つのアプローチは、Bluegiga デュアルモード広告をガイドとして使用し、物理 Web ビーコンの代わりに GATT サービスを広告することです。広告データの 128 ビット サービス UUID があると仮定すると、次の112233-4455-6677-8899-00AABBCCDDEEFF
ようになります。
procedure gatt_service_advertisement()
# Beacon mode
beaconMode = 1
#Stop advertisement
call gap_set_mode(0,0)
# Length
service_adv(0:1) = $11
# Incomplete list of 128 bit UUIDs (use $07 if the list is complete)
service_adv(1:1) = $06
# GATT Service UUID - should be little endian I think
service_adv(2:1) = $FF
service_adv(3:1) = $EE
...
service_adv(16:1) = $11
service_adv(17:1) = $00
# Set advertisement interval to 100ms.
# Use all three advertisement channels
call gap_set_adv_parameters(160, 160, 7)
# Set advertisement data
call gap_set_adv_data(0, 18, service_adv(0:18))
#set to advertising mode - with user data
call gap_set_mode(4, gap_undirected_connectable)
end
この手順を使用して、リンクされたデュアルモードの例のように繰り返しタイマーで呼び出すことにより、iBeacon と GATT サービスの間でアドバタイズを交互に行うことができます。
別のアプローチとして、スキャン応答で GATT サービスをアドバタイズすることもできますが、特定のユース ケースについて詳しく知らなければ、それが選択肢であるかどうかを判断するのは困難です。
BLED112 および Bluegiga ツールの使用に関する潜在的なヘルプについては、私の Web サイトをご覧ください: http://www.sureshjoshi.com/tag/bluegiga/
そうでなければ、何かを明示的に宣伝するべきではありません。gatt.xml を正しく設定すると、GATT 特性が本質的にアドバタイズされます (明示的なものではなく、BLE のものです)。
それらを正しく設定していますか?特にgatt.xmlを扱っている私のBLE113の例を見て、そこに役立つものがあるかどうかを確認してください:https://github.com/sureshjoshi/ble113-firmware-examples