发布动态扫描数据

28个职位/ 0个新职位
最后一篇
HRG.
离线
最后一次露面:2年5个月前
格鲁鲁
加入:2014-08-05 13:37
发布动态扫描数据


我正在使用Proximity Reporter应用程序.i希望添加扫描数据(例如,数字),这将增加每个广告事件。在DA14580中可能会增加?

HRG.
离线
最后一次露面:2年5个月前
格鲁鲁
加入:2014-08-05 13:37
有人帮忙吗?!

有人帮忙吗?!

je_dialog.
离线
最后一次露面:12小时42分钟前
职员
加入:2013-12-05 14:02
Hello HRG,我会检查

你好hrg,我会查一下的。请耐心点,给我几天时间。

BR JE_DIALOG.

HRG.
离线
最后一次露面:2年5个月前
格鲁鲁
加入:2014-08-05 13:37
而且为什么adv&scan

而且还为什么adv&scan_reesp数据处于这样的格式?#define app_scnrsp_data“\ x09 \ xff \ x00 \ x60 \ x52 \ x57 \ x2d \ x42 \ x4c \ x45”??
除了制造特定数据字段之外还有任何服务数据字段吗?如果有方法如何访问它?

HRG.
离线
最后一次露面:2年5个月前
格鲁鲁
加入:2014-08-05 13:37
嗨对话团队我们急切地

嗨对话小组我们急切地等待响应。
谢谢

je_dialog.
离线
最后一次露面:12小时42分钟前
职员
加入:2013-12-05 14:02
你好hrg,最简单的方法

实现计数器最简单的方法是实现一个计数器。

例如:如果您想测量4个发布事件,将发布时间间隔设置为700毫秒。

- 您必须将计时器设置为2152 ms(13ms * 4 + 700ms * 3)。
注意:1广告需要大约13毫秒+ 1广告间隔,例如700毫秒。

在很长一段时间内,这可能不是完全准确的:你希望它有多准确?

BR JE_DIALOG.

HRG.
离线
最后一次露面:2年5个月前
格鲁鲁
加入:2014-08-05 13:37
嗨je_dialog谢谢你

嗨JE_DIALOG谢谢你的回复.Even如果我们使用计时器,我们如何更改扫描数据,因为它被定义为宏,它可以在运行时更改吗?

-实际上,我需要更新扫描响应字段的每个广告活动期间的广告。
-例如-在通电期间扫描数据是00,所以对于每13ms的adv事件,我需要增加扫描数据,如01,02…因此,扫描响应数据字段会在广告期间发布动态数据,直到它进入休眠状态。

希望你了解我的问题。

MHv_Dialog
离线
最后一次露面:2个月3周前
职员
加入:15 2013-12-06
嗨Hrg,

嗨Hrg,

广告扫描响应数据设置在大多数示例项目的函数app_adv_func()中(template_fh是这个的一个很好的例子)。在广告开始之前运行此功能,并且加载到扫描响应和广告数据的内容将在所有将来的广告中使用,直到您停止广告。该功能可以在App_Template_Proj.c中找到。

因此,诀窍是停止广告,使用您更新的数据(计数器或其他)并重新启动广告,重建App_adv_Func()重建广告数据并重新启动广告。如果您使用两个睡眠模式之一,则可以使用计时器或其中一个睡眠挂钩进行停止广告。推荐后一方法。

制造商特定数据使用ADV_DATA类型0xFF。您可以使用定义的值Gap_ad_type_manu_specific_data而不是0xFF。假设您希望将0xAA的计数器值添加到Scan Esponse String。您必须先提供数据的总长度(包括类型)。这是类型的一个字节,以及数据的一个字节,或者为0x02。接下来,您应该提供0xFF,最后是0xAA的一个字节数据。整个字符串将是\ 0x02 \ 0xFF \ 0xAA

我希望这有意义并解决您的要求。

HRG.
离线
最后一次露面:2年5个月前
格鲁鲁
加入:2014-08-05 13:37
谢谢你mhvid_dialog的

谢谢你mhvid_dialog的详细回复。
有任何main(),所有这些函数,如adv_start,adv_stop被调用??因为在广告顺序操作发生的地方存在混乱!!

正如您所说的,0xAA值应该自动递增,但由于它是一个宏定义的格式,如何在运行时更改值??!

MHv_Dialog
离线
最后一次露面:2个月3周前
职员
加入:15 2013-12-06
嗨hrg,

嗨hrg,

App_adv_start()在app.c中定义。它使用app_adv_func()来构建最终发送到GAP堆栈的advertise命令。App_adv_start()在几个地方被调用。它在设备配置完成后第一次被调用(app_set_dev_config_complete_func())。当一个中心与设备断开连接时也被称为。

0xaa不会易惯性。您的申请将不得不。

下面是一个在app_adv_func()函数中动态更改广告内容的示例。我正在使用iBeacon作为一个例子,我正在加载在其他地方定义的小键和大键到广告数据字符串:

/////////// 代码片段开始

Void app_adv_func(struct gapm_start_advertise_cmd *cmd)
{
//开始广告。填充gapm_start_advertise_cmd消息
cmd-> op.code = gapm_adv_non_conn;/ /不可连接
cmd - > op。addr_src = GAPM_PUBLIC_ADDR;//使用公共地址
cmd - > intv_min = APP_ADV_INT_MIN;//最小广告间隔
cmd-> intv_max = app_adv_int_max;//最大广告间隔
cmd - > channel_map = APP_ADV_CHMAP;//广告频道(7 =>所有三个使用)
cmd-> info.host.mode = gap_broadcaster_mode;//广播模式(RX从未打开)
/*-----------------------------------------------------------------------------------
*设置广告数据和扫描响应数据
*---------------------------------------------------------------------------------*/
cmd-> info.host.scan_rsp_data_len = 0;// IBEACON中没有扫描响应
cmd-> info.host.adv_data_len = 27;// IBEACON的标准长度
//定义广播广告数据:
UINT8_T数据[27] = {0x1a,0xff,0x4c,0x00,0x02,0x15,// ibeacon
0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,// beacon uuid
0x00,0x00,0x00,0x00,//主要和次要密钥占位符
0xC5}, // 1米距离的信号强度
};
memcpy (cmd - > info.host.adv_data,平差[0],cmd - > info.host.adv_data_len);
//将动态生成的主要和次要键加入IBeAcon数据集(两者都有预加载到App_Env环境)
memcpy(&cmd-> info.host.adv_data [22],&app_env.major,2);
memcpy(&cmd-> info.host.adv_data [24],&app_env.minor,2);
返回;
}

///////////代码片段结束

anthony42
离线
最后一次露面:5年7个月前
加入:2015-07-17 08:21
嗨mhv_dialog,

嗨mhv_dialog,

我可以在写入时更改ADV数据
memcpy (cmd - > info.host.adv_data,平差[0],cmd - > info.host.adv_data_len);
所以我可以关闭NVDS_SUPPORT,
什么剂量的nvds要做什么?

谢谢,
安东尼

anthony42
离线
最后一次露面:5年7个月前
加入:2015-07-17 08:21
嗨mhv_dialog,

嗨mhv_dialog,

为什么来自nvds的dev name和adv数据是可以的,
但是nvds_tag_app_ble_scan_resp_data不正常
(如果(nvds_get (NVDS_TAG_APP_BLE_SCAN_RESP_DATA cmd - > info.host.scan_rsp_data_len,
cmd - > info.host.scan_rsp_data [0]) ! = NVDS_OK))
nvds.c中的扫描响应数据长度是对的,任何其他原因?

谢谢,
安东尼

mt_dialog.
离线
最后一次露面:3个月1日前
职员
加入:2015-06-08 34
嗨Antony42,

嗨Antony42,

NVDS是Sysram中的特殊区域,具有特定结构,可以通过OTP报头或使用指定的程序中的指定代码填充。如果成功读取来自NVDS的程序数据,它会从其他值获取来自默认值的NVDS ears的adv数据。

if(nvds_get(nvds_tag_app_ble_adv_data,&cmd-> info.host.adv_data_len,
&cmd-> info.host.addata [0])!= nvds_ok)

谢谢mt_dialog.

anthony42
离线
最后一次露面:5年7个月前
加入:2015-07-17 08:21
嗨mt_dialog,

嗨mt_dialog,

非常感谢您的回复,
ADV数据来自NVDS,但扫描响应数据始终来自默认宏,
.nvds_tag_app_ble_scan_resp_data =“\ x09 \ xff \ x00 \ x60 \ x52 \ x57 \ x2d \ x42 \ x4c \ x45”,
.can_resp_data_tag_len = 10,// scan_resp_data
那么什么可能导致nvds_get失败呢?

谢谢,
安东尼。

mt_dialog.
离线
最后一次露面:3个月1日前
职员
加入:2015-06-08 34
嗨antony42,

嗨antony42,

我们会看一看,一旦有消息就通知你。

谢谢mt_dialog.

mt_dialog.
离线
最后一次露面:3个月1日前
职员
加入:2015-06-08 34
嗨antony42,

嗨antony42,

似乎在从NVDS获取扫描响应数据的过程中存在错误,这将在未来的SDK发布中修复。

谢谢mt_dialog.

HRG.
离线
最后一次露面:2年5个月前
格鲁鲁
加入:2014-08-05 13:37
还有一个疑问要唤醒

还有一个怀疑从深睡眠中醒来是一个类似于Push Button(如在Proximity_reporter_FH)的中断吗?无论如何在狭窄的时间后睡觉了?

je_dialog.
离线
最后一次露面:12小时42分钟前
职员
加入:2013-12-05 14:02
你好hrg,有两个好

Hello HRG,这里有两个好文件,可以告诉您如何在同步(BLE定时器)和异步(EXT中断)模式下使用睡眠模式。

睡眠模式配置

http://support.dialog-semiconductor.com/system/files/restricted/UM-B-006.pdf

http://support.dialog-semiconductor.com/resource/b-026-external-wake-mechanisms

BR JE_DIALOG.

HRG.
离线
最后一次露面:2年5个月前
格鲁鲁
加入:2014-08-05 13:37
谢谢JE_Dialog ! !

谢谢JE_Dialog ! !
另外,请回复这些问题

有任何main(),所有这些函数,如adv_start,adv_stop被调用??因为在广告顺序操作发生的地方存在混乱!!

正如您所说的,0xAA值应该自动递增,但由于它是一个宏定义的格式,如何在运行时更改值??!

谢谢

MHv_Dialog
离线
最后一次露面:2个月3周前
职员
加入:15 2013-12-06
嗨HRG,

嗨HRG,

请看我上面的回复。

HRG.
离线
最后一次露面:2年5个月前
格鲁鲁
加入:2014-08-05 13:37
谢谢Mhv_dialog ! !

谢谢Mhv_dialog ! !

HRG.
离线
最后一次露面:2年5个月前
格鲁鲁
加入:2014-08-05 13:37
嗨对话小组

嗨对话小组

我修改了近距离应用程序,以在广告领域进行动态制造数据,并且在SRAM中的调试模式下工作正常。该应用程序将宣传一次并进入睡眠,当我按下按钮K1时,它将再次浏览一次递增的数据并睡觉。这在调试模式下工作正常。现在我在OTP中刻录了同一节目。出现了问题!
它的广告做得很好,但是制造数据在K1唤醒时并没有增加!!那么这里的问题是什么呢?
请你慢慢解释为什么这样的问题出现了???

HRG.
离线
最后一次露面:2年5个月前
格鲁鲁
加入:2014-08-05 13:37
对话小组为什么没有

对话组为什么到目前为止没有回应!?

je_dialog.
离线
最后一次露面:12小时42分钟前
职员
加入:2013-12-05 14:02
HRG,你睡眠模式

HRG,您使用了什么睡眠模式?请注意,如果您使用深度睡眠,所有SRAM内容都丢失:因此您在SRAM中作为柜台保持的任何东西都将被剥离。SRAM从睡眠中从OTP重新装入OTP。

如果你使用延长睡眠,SRAM就会保持活力。

BR JE_DIALOG.

HRG.
离线
最后一次露面:2年5个月前
格鲁鲁
加入:2014-08-05 13:37
谢谢你的回复JE

感谢回复JE_dialog。
你是对的 !!我使用了深度睡眠模式(默认情况下,在Proximity报道中,它是深度睡眠模式)。!我也烧掉了OTP!在OTP标题期间,我启用了JTAG.SO,我们可以通过Spota或任何其他方式将其更改为扩展睡眠模式吗?

je_dialog.
离线
最后一次露面:12小时42分钟前
职员
加入:2013-12-05 14:02
你好HRG,那不是那么

你好hrg,这不是那么直接…在之后实现SPOTA是不可能的,因为它需要包含在项目构建中,并且你可能烧毁了OTP。最快的方法将是与其他设备交换(在主板上交换),我建议在完全确定拥有所需的功能之前,一切都保持在开发模式。或者,你可以使用BASIC开发工具包,它有一个FLASH,在那里你可以使用FLASH内存,或者永久使用FLASH(只烧bootlader到OTP例如)。

BR JE_DIALOG.

jd@exp-eng.com.
离线
最后一次露面:2年7个月前
加入:2014-10-22 04:34
对话小组,

对话小组,

我也可以用你的帮助。我想做同样的事情HRG描述了,但是我正在使用最新版本的SDK,V5.0.3。

我也在使用邻近记者应用程序。

我无法在深度睡眠或调试模式下更新制造商特定数据。我得到默认的制造商特定的数据'?DLG-BLE'每一次。

如果能得到最新消息,我将不胜感激。

mt_dialog.
离线
最后一次露面:3个月1日前
职员
加入:2015-06-08 34
嗨jd@exp-eng,

JD @ Exp.-Eng,

当您处于开发模式并且您的项目在深睡眠中配置580时,580实际上并没有关闭其Sysram,因此即使您还没有在保留存储区域中保存您的值,您应该能够看到您的值更改扫描响应字符串,如果您实际上更改它们。使用以下命令,在580个示例中的大多数示例中,扫描响应数据通过NVDS加载:

app_easy_gap_adv_read_from_nvds(&cmd-> info.host.scan_rsp_data_len,&cmd-> info.host.scan_rsp_data [0],scan_rsp_data_len,scan_rsp_data_len + 1,
nvds_tag_app_ble_scan_resp_data);在app_easy_gap_undirected_advertise_start_create_msg()函数中。请查看此函数并替换命令
使用您的字符串操作功能。

谢谢mt_dialog.