Hi Dialog:
DSPS 3.15上修改广播名称,但名称长度无法超过8个字节,便按照这个方式修改
https://support.dialog-semiconductor.com/increase-length-name-during-adv...
将app_sps_device_project.h中的
#define APP_DFLT_ADV_DATA "\x11\x07\xb7\x5c\x49\xd2\x04\xa3\x40\x71\xa0\xb5\x35\x85\x3e\xb0\x83\x07"
#define APP_DFLT_ADV_DATA_LEN (18)
变成
#define APP_DFLT_ADV_DATA "\x04\xFFHi!"
#define APP_DFLT_ADV_DATA_LEN (5)
但在例程上修改,如果APP_DFLT_ADV_DATA的字节数量APP_DFLT_ADV_DATA_LEN超过10byte,整个程序便无法运行,现在我需要广播名字:ABCDEFGHIJK,显示出来的共11byte,且 APP_DFLT_ADV_DATA保持原来的
#define APP_DFLT_ADV_DATA "\x11\x07\xb7\x5c\x49\xd2\x04\xa3\x40\x71\xa0\xb5\x35\x85\x3e\xb0\x83\x07"
#define APP_DFLT_ADV_DATA_LEN (18)
能否实现?
Device:
你好
只需要修改nvds.c中
.NVDS_TAG_DEVICE_NAME = "ABCDEFGHIJK",
以及
.DEVICE_NAME_TAG_LEN = 11,
就可以了,其他地方不需要修改
Hi Dialog
我尝试过,只修改这个只能显示出“ABCDEFGH”共8byte
广播数据长度的限制确实会导致名称无法完整放进广播信息,但是连接过一次以后就能够正确显示完整的名称了。
如果一定要确保广播数据里也显示完整的设备名,那么必须如你链接的帖子里所说的一样,缩短原有的广播数据或者缩短你的设备名字。
我这边不管是只修改NVDS里的设备名+长度还是同时修改nvds里的设备名以及广播信息都是可以正常广播的,修改缩短了广播信息后设备名在广播里也能完整显示了。
以下是我基于DSPSv3做的所有修改,实测是可以正常广播的:
// .NVDS_TAG_DEVICE_NAME = "DA1458x",
.NVDS_TAG_DEVICE_NAME = "ABCDEFGHIJK", //modified
// .DEVICE_NAME_TAG_LEN = 7,
.DEVICE_NAME_TAG_LEN = 11, //modified
/ / # define APP_DFLT_ADV_DATA \ x11 \ x07 \ xb7 \”x5c\x49\xd2\x04\xa3\x40\x71\xa0\xb5\x35\x85\x3e\xb0\x83\x07"
//#define APP_DFLT_ADV_DATA_LEN (18)
#define APP_DFLT_ADV_DATA "\x04\xFFHi!" //modified
#define APP_DFLT_ADV_DATA_LEN (5) //modified
如果你无法正常广播,还请检查一下做了哪些其他修改。另外使用Keil编译并下载程序,点击运行后可以退出debug模式,这样广播会正常一些
Hi Dialog
好的,明白了,我这边要做的工程要求有设备名字有11byte,但同时在广播数据包中包含完整的UUID,以便扫描时使用,如果必须要缩短一个那我再调整下,谢谢
使用DSPSv5.15的话,如果名字长度放不进广播数据里那么会加到scan response里面,应该可以满足你的需要,但是这个方式也有缺点,就是只有active scan才能读到scan response, passive scan是没有办法读到的,也就是说拿不到设备名。不管使用什么方式,连接一次以后都会更新到完整正确的设备名