我正在尝试使BLED112表现得像iBEacon,并且还宣传更多的GATT服务。虽然在Bluegiga示例中为iBeacon广告用户数据工作正常,但我不知道如何宣传可用的GATT服务列表。任何想法都非常感谢!
答案 0 :(得分:0)
请查看我的网站,了解有关使用BLED112和Bluegiga工具的一些潜在帮助:http://www.sureshjoshi.com/tag/bluegiga/
否则,你不应该明确宣传任何东西。如果您正确设置了gatt.xml,那么GATT特性就会被固有地宣传(它是一个BLE的东西,而不是一个明确的东西)。
您确定要正确设置它们吗?看看我的BLE113示例,专门处理gatt.xml并查看是否有任何有用的内容:https://github.com/sureshjoshi/ble113-firmware-examples
答案 1 :(得分:0)
一种方法是使用Bluegiga dual-mode advertising作为指南,而不是物理网络信标,在那里宣传您的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服务,但如果不了解您的特定用例,很难说这是否适合您。