我正试图使BLED112表现得像iBEacon,并宣传更多的GATT服务。虽然广告用户数据的iBeacon在Bluegiga的例子工作得很好,我不知道如何也广告可用的GATT服务的列表。任何想法都非常感谢!
查看我的网站,获取有关使用BLED112和Bluegiga工具的一些潜在帮助:http://www.sureshjoshi.com/tag/bluegiga/
否则,你不应该明确地宣传任何东西。如果您正确地设置了GATT .xml,那么GATT特性将被固有地宣传(这是一个BLE的东西,而不是一个显式的东西)。
你确定你设置正确了吗?看看我的BLE113示例,特别是处理gatt.xml,看看那里是否有任何有用的东西:https://github.com/sureshjoshi/ble113-firmware-examples
一种方法是使用Bluegiga双模式广告作为指导,而不是物理Web Beacon,在那里为您的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服务,但是在不了解更多关于您的特定用例的情况下,很难说这是否适合您。