嗨,支持,
我正在一个基于ble_app_peripheral演示项目的项目上工作。我遇到了一个问题,app_add_ad_struct()函数断言一个错误和崩溃的DA。问题是,我并没有试图在广告和扫描响应包中放入比我应该放入的更多的数据。我目前使用mnf_specific_data_ad_structure结构为14字节的制造商数据。还有25字节的其他数据,如设备名,ADV_TYPE_COMPLETE_LIST_16BIT_SERVICE_IDS等…最后,我希望能够利用所有的广告和扫描响应空间,现在,如果我试图添加更多,app_add_ad_struct()暂停我的代码。我无法确定冲突在哪里。如果你能提供任何见解,我将不胜感激。谢谢。
设备:
嗨,大卫。首轮,
当你说app_add_ad_struct()崩溃的da,你的意思是580进入硬错误处理?如果您的程序出现硬故障,您可以检查程序崩溃的位置,以便跟踪问题。请参阅7.2.5.2节中的UM-B-051。通过打开你的内存并将它设置为unsigned long,你可以通过查看第7个unsigned long来检查你的程序在哪里崩溃了,这是你的程序计数器。
由于MT_dialog
它实际上不会崩溃,它会转到assert语句,表示我试图把很多数据放入广告并扫描响应包。问题现在解决了,发生的事情是,我试图使用app_add_ad_struct()添加的数据的大小比广告包的末尾所能容纳的大,所以它被移动到扫描响应中。这在广告包中留下了6个字节的空白。为了利用这些,我将制造商特定的数据分成两个数据结构,然后都使用app_add_ad_struct()添加。