启动时的随机地址

5个帖子/ 0新
最后一篇
Ibbkoeln.
离线
最后一次露面:3个月2周前
加入:2016-03-18 10:34
启动时的随机地址

亲爱的对话团队!

我想使用一个随机地址,应该在第一次启动时生成,而且永远不会在生命周期中更改。我使用SKD5使用DA14583。实现这一点的最佳方式是什么?

谢谢!

此致,
奥利弗

设备:
mt_dialog.
离线
最后一次露面:2个月2周前
职员
加入:2015-06-08 11:34
嗨ibbokoeln,

嗨ibbokoeln,

您可以使用设备靴子时生成的静态随机地址,而在设备供电时无法更改。要生成此类地址,您可以使用Gapm_gen_rand_addr_cmd使用Gap_static_addr作为地址类型。有关此信息的更多信息,请检查RW-BLE-GAP-IS文档。

谢谢mt_dialog.

Ibbkoeln.
离线
最后一次露面:3个月2周前
加入:2016-03-18 10:34
你好,

你好,

谢谢你的提示。你的解决方案不是我想要的,但它向我展示了正确的方式。对于记录,这是我的解决方案。也许有人可能会发现它有用:

以下对DA15483具有SDK5.0.3的有效性:

1.在user_config.h中.address_src设置为gapm_provide_rnd_addr:

static const struct user_undircation_advertise_conf = {
///宣传操作类型。
.Advertise_operation = ADV_UNDIRECT,
///自己的BD地址源:
.address_src = gapm_provide_rnd_addr,
///宣传间隔
.intv = 874,
///广告频道地图
.channel_map = 0x7,
};

2.在启动时,执行以下函数flash_config_init my_app_init:


typedef struct {
UINT32_T标题;
struct bd_addr bd_addr;
配置;


#define config_header 0xe347fd78 //一些随机uint32
静态配置配置;


void flash_config_init(void){
spi_pad_t spi_flash_cs_pad;
spi_flash_cs_pad.pin = spi_cs_pin;
spi_flash_cs_pad.port = spi_gpio_port;
//启用SPI和SPI Flash
spi_init(&spi_flash_cs_pad,spi_mode_8bit,spi_rool_master,spi_clk_dle_pol_low,spi_pha_mode_0,spi_mint_disable,spi_xtal_div_8);
spi_flash_init(spi_flash_size,spi_flash_page);
//上电闪存
SPI_FLASH_RELEASE_FROM_POWER_DOWN();
spi_flash_read_data((uint8_t *)(&config),0x1d000,sizeof(config));
if(config.header!= config_header){
UINT8_T RAND [16];
trng_acquire(兰德);
config.header = config_header;
memcpy(&config.bd_addr,rand,6);
spi_flash_block_erase(0x1d000,sector_erase);
spi_flash_write_data((uint8_t *)(&config),0x1d000,sizeof(config));
}
//电源闪烁
spi_flash_power_down();
//发布SPI控制器
spi_release();

3.以下代码在User_App_Adv_Start(void)中执行:


void user_app_adv_start(void){
struct bd_addr addr = config.bd_addr
ARCH_PRINTF(“使用BD_ADDR:%02x%02x%02x%02x%02x-%02x \ n”,addr.addr [0],addr.addr [1],addr.addr [2],addr。addr [3],addr.addr [4],addr.addr [5]);
struct gapm_start_advertise_cmd * cmd;
cmd = app_easy_gap_undirected_advertise_get_active();
cmd-> op.addr = addr;
app_easy_gap_undircated_advertise_start();
}

该方法导致一次性随机地址,只有在删除闪光灯或在第一次启动时才会更新。

问候,
奥利弗

Sprhawk.
离线
最后一次露面:3年1个月前
加入:2016-03-03 17:25
我担心这不是

我担心这是不符合蓝牙规范的,由于规范,静态地址应在电源周期期间更新,

gapm_gen_rand_addr_cmd方式应该是正确的方式

mt_dialog.
离线
最后一次露面:2个月2周前
职员
加入:2015-06-08 11:34
嗨Ibbkoeln,

嗨Ibbkoeln,

谢谢你分享你的解决方案。

最好的问候mt_dialog.