你好对话小组
我想把从外部存储器的特定区域读取的BD地址反映到DA14580上。在AN-B23第9.1.1章和第12.5章中,仅针对trimmig值描述了示例源。关于从外存读取的BD地址值,不知修改。扩展内存中的BD地址值应该如何反映到DA14580中?
致以最诚挚的问候
嗨,舒黑,
BD地址由custom\u nvds\u get\u func加载到堆栈中。
谢谢你的回复。通过将从外部存储器读取的BD地址复制到nvds.c中的“buf”,我确认它工作良好。谢谢你的消息。
嗨,Dialog我的芯片组也是14580。我想动态地改变BD地址,因此,我引用了这篇文章。我知道我必须在nvds.c中修改custom\u nvds\u get\u func所以我在char数组中准备了一个bd地址:{0x61},{0x62},{0x63},{0x64},{0x65},{0x66}这是我的自定义功能:
外部字符设备地址[6];uint8\u t custom\u nvds\u get\u func(uint8\u t tag,nvds\u tag\u leng\u t*lengthPtr,uint8\u t*buf){开关(标签){案例NVDS\标签\ BD\地址:if(nvds\u data\u ptr->nvds\u VALIDATION\u FLAG&BD\u ADDRESS\u VALID){if(*lengthPtr{*长度ptr=0;返回NVDS\长度\超出\范围;}其他的{uint8_t buf1[6];memcpy(&buf1,&device\bd\u addr,NVDS\u LEN\u bd\u ADDRESS);*lengthPtr=NVDS\u LEN\u BD\u地址;返回nvds\u get\u func(tag,lengthPtr,buf1);}}中断;}返回nvds\u get\u func(tag,lengthPtr,buf);}
我的调用程序在uart\u sps.c中
nvds标签长度;uint8_t buff1[6];uint8\u t re=custom\u nvds\u get\u func(nvds\u TAG\u BD\u ADDRESS,&lengthPtr,buff1);如果(re==NVDS\u OK){app_gapm_reset_msg_create();应用程序\u easy \u gap \u Advertised \u with \u timeout \u stop();app_easy_gap_undirected_advertise_start();}
最终的bd地址确实发生了更改(不是默认的{0x00,0x00,0x00,0xCA,0xEA,0x80}),但是它的值不是预期的{0x61},{0x62},{0x63},{0x64},{0x65},{0x66}它是0x00,0x06,0x00,0x00,0x00,0x00,0x00怎么了?
你好,524,
我不完全明白你想做什么,但是为什么你要分配一个额外的本地数组并从全局变量中的数组中复制bd地址,以及为什么在这样做之后你要再次调用nvds\u get\u func()?
只需执行以下操作,就可以从已设置的设备\u bd\u addr数组中获得所需的广告地址。
案例NVDS\标签\ BD\地址:{if(nvds\u data\u ptr->nvds\u VALIDATION\u FLAG&BD\u ADDRESS\u VALID){if(*lengthPtr{*长度ptr=0;返回NVDS\长度\超出\范围;}其他的{memcpy(buf,设备地址,NVDS长度地址);*lengthPtr=NVDS\u LEN\u BD\u地址;返回(NVDS\u OK);}}中断;}
谢谢你的对话
嗨,舒黑,
BD地址由custom\u nvds\u get\u func加载到堆栈中。
你好对话小组
谢谢你的回复。
通过将从外部存储器读取的BD地址复制到nvds.c中的“buf”,我确认它工作良好。
谢谢你的消息。
致以最诚挚的问候
致以最诚挚的问候
嗨,Dialog
我的芯片组也是14580。
我想动态地改变BD地址,因此,我引用了这篇文章。
我知道我必须在nvds.c中修改custom\u nvds\u get\u func
所以我在char数组中准备了一个bd地址:{0x61},{0x62},{0x63},{0x64},{0x65},{0x66}
这是我的自定义功能:
外部字符设备地址[6];{
uint8\u t custom\u nvds\u get\u func(uint8\u t tag,nvds\u tag\u leng\u t*lengthPtr,uint8\u t*buf)
{
开关(标签)
{
案例NVDS\标签\ BD\地址:
if(nvds\u data\u ptr->nvds\u VALIDATION\u FLAG&BD\u ADDRESS\u VALID)
{
if(*lengthPtr
*长度ptr=0;
返回NVDS\长度\超出\范围;
}
其他的
{
uint8_t buf1[6];
memcpy(&buf1,&device\bd\u addr,NVDS\u LEN\u bd\u ADDRESS);
*lengthPtr=NVDS\u LEN\u BD\u地址;
返回nvds\u get\u func(tag,lengthPtr,buf1);
}
}
中断;
}
返回nvds\u get\u func(tag,lengthPtr,buf);
}
我的调用程序在uart\u sps.c中
nvds标签长度;
uint8_t buff1[6];
uint8\u t re=custom\u nvds\u get\u func(nvds\u TAG\u BD\u ADDRESS,&lengthPtr,buff1);
如果(re==NVDS\u OK)
{
app_gapm_reset_msg_create();
应用程序\u easy \u gap \u Advertised \u with \u timeout \u stop();
app_easy_gap_undirected_advertise_start();
}
最终的bd地址确实发生了更改(不是默认的{0x00,0x00,0x00,0xCA,0xEA,0x80}),但是它的值不是预期的{0x61},{0x62},{0x63},{0x64},{0x65},{0x66}
它是0x00,0x06,0x00,0x00,0x00,0x00,0x00
怎么了?
你好,524,
我不完全明白你想做什么,但是为什么你要分配一个额外的本地数组并从全局变量中的数组中复制bd地址,以及为什么在这样做之后你要再次调用nvds\u get\u func()?
只需执行以下操作,就可以从已设置的设备\u bd\u addr数组中获得所需的广告地址。
案例NVDS\标签\ BD\地址:{
{
if(nvds\u data\u ptr->nvds\u VALIDATION\u FLAG&BD\u ADDRESS\u VALID)
{
if(*lengthPtr
*长度ptr=0;
返回NVDS\长度\超出\范围;
}
其他的
{
memcpy(buf,设备地址,NVDS长度地址);
*lengthPtr=NVDS\u LEN\u BD\u地址;
返回(NVDS\u OK);
}
}
中断;
}
谢谢你的对话