我正在尝试传输最大长度(31b)广告数据包。对于广告标志的3个强制性字节,似乎我应该能够传送我自己的28个字节,但是当我尝试发送超过26个时,它不起作用 - 它似乎并没有广告。这个奇怪的是,当我在被配置为中心的DA14580上收到26B广告时,我可以看到我的数据结束(\ x06 \ x01),然后看到缓冲区中的两个备用字节的空间,但是当我增加我的时发布到27或28个字节我什么都没有。
这就是我的26B广告所拥有的:
#define user_advertise_data“\ x19 \ xff \ x31 \ x01 \ x97 \ x30 \ xcf \ x43 \ xea \ x36 \ x00 \ x12 \ x34 \ x56 \ x78 \ x92 \ x01 \ x02 \ x02 \ x02 \ x02 \ x02 \ x02 \ x02 \ x02 \ x02 \ x02 \ x02 \ x01 \ x02 \ x02 \ x01 \ x02 \ x02 \ x01 \ x02 \ x02 \ x01 \ x36\ x00 \ x06 \ x01“
要尝试28B,我刚刚添加了两个'ff'字节(并增加了字段长度字节):
#定义USER_ADVERTISE_DATA“\ X1B \ XFF \ X31 \ X01 \ X97 \ X30 \ XCF \ X43 \ XEA \ X36 \ X00 \ X12 \ X34 \ X56 \ X78 \ X92 \ X01 \ X02 \ X02 \ X02 \ X02 \ X00 \ X00\ x00 \ x06 \ x01 \ xff \ xff“
设备:
嗨mark.bloechl,
2场景已经检查并工作得很好,请给我更多的信息,你的意思是“被配置为中心”?你将DA14580作为中心设置?
谢谢,
sts_dialog。
你好,
我有2 da14580:一个配置为外设和一个作为中央的。两者的代码来自DSP示例项目。当我尝试从外围配置的单元发布超过26个用户字节并在中央配置的单元上接收它时,它不起作用。当我在26个字节或以下时,它确实如此。这两个实例之间的唯一区别是user_advertise_data的大小。但是,当我将广告长度设置为> 26B时,我不相信该单位是广告的,因为我也无法在手机上看到它。
谢谢!
标记
嗨马克,
DA14580堆栈会自动添加带有3个字节的广告数据(长度+类型+标志= 3字节),然后剩余28个字节。对于剩余数据,您需要至少2个字节以指示有效载荷长度和通告数据类型。这使您有26个字节的有效载荷。
可以通过在SDK内部实现围绕Deep的工作来防止堆栈添加3个字节的标志,但是当您的外设可连接时,蓝牙规范要求您必须在广告中拥有广告中的标志。如果您真的需要控制广告中的所有31字节,我可以提供解决方法。
/ mhv.
长度和数据类型字段包含在我的广告字符串中(即,当我说26个字节为1B长度+ 1B类型+ 24B有效载荷时,为28字节字符串的DITTO)。
对不起,不要仔细阅读你的帖子。
我刚刚将28byte字符串复制到SDK504的清洁提取(空外设模板项目),并且它在没有问题的情况下宣传整个字符串。
///广告服务数据
///广告广告类型标志,不得在广告数据中设置
#定义USER_ADVERTISE_DATA“\ X1B \ XFF \ X31 \ X01 \ X97 \ X30 \ XCF \ X43 \ XEA \ X36 \ X00 \ X12 \ X34 \ X56 \ X78 \ X92 \ X01 \ X02 \ X02 \ X02 \ X02 \ X00 \ X00\ x00 \ x06 \ x01 \ xff \ xff“
///广告数据长度 - 最多28个字节,保留3个字节以设置
#define user_advertise_data_len(sizeof(user_advertise_data)-1)
/ mhv.