可解决的私人地址问题

16个帖子/ 0新
最后一篇
SUMMER20100514.
离线
最后一次露面:4年3个月前
格鲁鲁
加入:2014-12-30 05:01
可解决的私人地址问题

在那里,我跟随文档AN-B-022 DA14580可解析的私人地址指南来实现随机地址,并且每件事都进展顺利,地址根据我的配置定期更改。但是,我发现每次我改变了调用app_adv_func()的广告数据,也改变了地址。
在呼叫函数app_adv_func()后,我该怎么办法可以防止地址发生变化?

设备:
SUMMER20100514.
离线
最后一次露面:4年3个月前
格鲁鲁
加入:2014-12-30 05:01
就我而言,它

据我所知,才能实现这一点,是不可能的吗?

je_dialog
离线
最后一次露面:2周3小时前
职员
加入:2013-12-05 14:02
是的,夏天,我相信你是

是的夏天,我相信你是对的。BR JE_DIALOG.

SUMMER20100514.
离线
最后一次露面:4年3个月前
格鲁鲁
加入:2014-12-30 05:01
谢谢你。

谢谢你。

Mahesh.
离线
最后一次露面:3年2个月前
加入:2016-01-04 14:03
你好,

你好,
我在DA14583DEVKT-B板上使用SDK 5.0.3软件。
我拍摄了“BLE_APP_PERITELAL”(给出了BLE示例项目)。

我已将“address_src”更改为“gapm_gen_static_rnd_addr”。
在扫描蓝牙设备时,我正面临问题。在扫描蓝牙设备地址时,没有任何电源周期(DA14583)正在发生变化。根据蓝牙核心规范,如果我们选择了静态随机地址,那么蓝牙地址必须在每个电源周期上更改。

我的要求是需要在每个电源周期上更改蓝牙设备地址。
请指导我解决这个问题。

问候,
Mahesh Chandana。

mt_dialog.
离线
最后一次露面:4周1日前
职员
加入:2015-06-08 11:34
嗨mahesh,

嗨mahesh,

这是一个已知的问题,并且有一个问题,您可以使用Gapm_gen_rand_addr_cmd与Gap_static_addr类型一起使用,并将生成的地址存储在Gapm_dev_bdaddr_ind消息中返回。然后,应将GAPM_START_ADVERTESE_CMD设置为CAPM_PROVIDE_RND_ADDR并在地址字段中提供存储的随机地址,有关命令的更多信息,请检查RW-BLE-GAP-IS。这个想法是在设备的初始化期间调用上述进程,例如,当数据库的设置已经完成,然后,在水中使用BD_Address后,您可以启动广告。

谢谢mt_dialog.

Mahesh.
离线
最后一次露面:3年2个月前
加入:2016-01-04 14:03
你好,

你好,
其中函数以及我们需要执行这些更改序列的文件。

“GAPM_PROVIDED_RND_ADDR”我直接在“user_config.h”中更改。

问候,
Mahesh Chandana。

mt_dialog.
离线
最后一次露面:4周1日前
职员
加入:2015-06-08 11:34
嗨mahesh,

嗨mahesh,

没有特殊文件来实现这一点,只需创建一个发送命令Gapm_gen_rand_addr_cmd的函数,通过catch_rest机制(cathm_dev_bdaddr_ind检索命令,并在准备广告命令时设置您从该指示中获取的DB地址OP-> ADDR成员中的GAPM_START_ADVERTERS_CMD结构。检查上面提到的文件是否有关结构的任何细节。

谢谢mt_dialog.

Mahesh.
离线
最后一次露面:3年2个月前
加入:2016-01-04 14:03
你好

你好

在发送命令“GAPM_GEN_RAND_ADDR_CMD”后,我能够检索CATCH_REST机制(捕获GAPM_DEV_BDDDR_IND)。能够读取随机地址。

我正在调用app_gapm_gen_rand_addr_msg_create()中的“default_app_on_db_init_complete()中,如下所示

void default_app_on_db_init_complete(void)
{
struct gapm_gen_rand_addr_cmd * cmd;
cmd = app_gapm_gen_rand_addr_msg_create();
app_gapm_gen_rand_addr_msg_send(cmd);

Execute_default_operation_void(default_operation_adv);
返回;
}

收到生成的随机BD地址后,我需要更新。
如您所说,我们可以在Op-> Addr成员中的GapM_Start_Advertise_cmd Struct中更新它(如下所示)

__inline struct gapm_start_advertise_cmd * app_advertise_start_msg_create(void)
{
struct gapm_start_advertise_cmd * cmd = ke_msg_alloc(gapm_start_advertise_cmd,
task_gapm,task_app,
gapm_start_advertise_cmd);

CMD-> OP-> ADDR = RERETIEGEADDRESS;
返回(cmd);
}

但我们正在接收用户级别的随机地址,相同的方式从用户级别传递随机地址。
有任何规定可以从用户级别访问“Op-> Addr”。请指导我是更新OP-> ADDR的合适位置。

问候,
Mahesh Chandana。

mt_dialog.
离线
最后一次露面:4周1日前
职员
加入:2015-06-08 11:34
嗨mahesh,

嗨mahesh,

您可以在不使用App_easy函数的情况下进行自定义启动广告功能,分配gapm_start_advertise_cmd.消息,用正确的参数填充它并发送它,或者,您只能在user_config.h中更改为gapm_provide_rnd_addr以及启动广告调用app_easy_gap_undircted_advertise_get_active()然后将生成的地址复制到cmd-> op.addr成员并最终调用app_easy_gap_undircated_advertise_start()。

谢谢mt_dialog.

Sprhawk.
离线
最后一次露面:3年3天前
加入:2016-03-03 17:25
嗨,我已经想到了这些

嗨,我已经想到了这些命令,但我不知道将序列放在哪里。

我想我应该援引gapm_gen_rnd_addr.在启动广告之前,但我找到了我在user_app_init()中的命令,gapm_bd_addr_ind.没有退回。

只有在我把命令置于时user_app_adv_start.它将起作用。

但它应该只开始广告只有随机地址。

那我该怎么办?

谢谢你

Mahesh.
离线
最后一次露面:3年2个月前
加入:2016-01-04 14:03
你好,

你好,
按照“default_app_on_db_init_complete(void)”功能进行以下更改
void default_app_on_db_init_complete(void)
{

struct gapm_gen_rand_addr_cmd * cmd;

//创建并发送命令以生成BD随机地址
cmd = app_gapm_gen_rand_addr_msg_create();
app_gapm_gen_rand_addr_msg_send(cmd);

// execute_default_operation_void(default_operation_adv);
返回;
}

然后在“user_catch_rest_hndl()”函数中放置以下案例
CASE GAPM_DEV_BDADDR_IND:
{
//将void指针投入相应的消息结构
struct gapm_dev_bdaddr_ind const * msg_param =(struct gapm_dev_bdaddr_ind const *)(param);

//在全局数组中复制生成的随机地址
Memcpy(UAP_GENRANDADDR_MDA,MSG_PARAM-> ADDR.ADDR.ADDR,BD_ADDR_LEN);

user_app_adv_start();

} 休息;

然后更新“user_app_adv_start()”函数内的“cmd-> op.addr.addr”。

它为我工作。

问候,
Mahesh Chandana

Sprhawk.
离线
最后一次露面:3年3天前
加入:2016-03-03 17:25
你好

你好

大帮助,我会尝试。谢谢

Mahesh.
离线
最后一次露面:3年2个月前
加入:2016-01-04 14:03
你好,

你好,
非常感谢您的支持。

问候,
Mahesh Chandana。

mt_dialog.
离线
最后一次露面:4周1日前
职员
加入:2015-06-08 11:34
嗨Sprhawk,Mahesh

嗨Sprhawk,Mahesh

由于在上一篇文章中所示,在user_app_init期间发布了每条消息,因为堆栈在调用函数后堆栈被重置。在第6篇文章中,想法是在设备的初始化期间调用上述进程,例如,当数据库的设置已经完成时,然后在水中的BD_Address后,您可以启动广告。“因此,您可以在数据库初始化后生成bd_address(在app_on_db_init_complete中发送命令)或者如果在设备配置完成时没有任何数据库(在app_on_set_dev_config_complete()时发送生成地址命令)。在您将BD_Address(意思是处理程序中的PACMM_DEV_BDADDR_IND中的处理程序中)进行了解之后,您可以在变量中复制地址并分配您的广告命令填写正确的结构并发送消息(正如Mahesh建议的)。或者您可以等待GAPM_CMP_EVT(表示命令已完成)并从该回调开始广告。这将确保消息序列将是合适的。

还要检查这篇文章http://support.dialog-semicondiondiond.com/question-about-generation-tatic ...

谢谢mt_dialog.

Mahesh.
离线
最后一次露面:3年2个月前
加入:2016-01-04 14:03
你好,

你好,
它为我工作。

非常感谢你...

问候,
Mahesh Chandana。

主题锁定