关于使用SDK5.0的广告作为灯泡

18个帖子/ 0新
最后一篇
Liuluan002.
离线
最后一次露面:10个月2个星期前
加入:2015-11-27 14:24
关于使用SDK5.0的广告作为灯泡

嗨对话框,

我正在尝试使Beacon应用程序的忠告权如其他蓝牙设备可以倾听空中,这是我遵循您网站链接的那个人的问题,但仍然无法捕捉到其他蓝牙设备的广播数据包扫描广播包。能否请你帮忙?

引用我所做的与以下内容相同:
http://support.dialog-semicondiondiondum/aadvertisement-complete-callback -...

选项2(正确的选项)是通过catch rest函数(user_catch_rest_hndl)捕获一个不可连接的广告的结尾。你可以把下面的代码放到函数user_peripheral.c中:

案例GAPM_CMP_EVT:
{
Struct gapm_cmp_evt const *msg_param = (Struct gapm_cmp_evt const *)(param);
开关(MSG_PARAM->操作)
{
案例GAPM_ADV_NON_CONN:
user_app_adv_start();//完成后或任何您想要的内容
打破;

默认:
打破;
} 休息;
}

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

嗨liuluan002,

您可以转到GapM_CMP_EVT_HANDLER()并在接收捕获REST功能的回调函数时检查断点。如果执行正确的案例,则在切换语句中调用它。您可以始终使用第一个选项,以便调试目的,以检查GAPM_ADV_NON_CONN是否被触发。

谢谢mt_dialog.

Liuluan002.
离线
最后一次露面:10个月2个星期前
加入:2015-11-27 14:24
感谢你的回复。

感谢你的回复。但是我正在调试代码,但它在global_int_stop()中停止;在arch_main.cn时,我运行f10步骤

Liuluan002.
离线
最后一次露面:10个月2个星期前
加入:2015-11-27 14:24
亲爱的mt_dialog,

亲爱的mt_dialog,

我试图运行您的代码从DA1458x_SDK\5.0.3\项目\target_apps\ble_examples\ble_app_peripheral,但我不能捕捉广播包从其他蓝牙设备。该设备可以从其他蓝牙信标包获取该包。你能帮我运行它,让一些基于ble_app_peripheral的信标广播包运行吗?

mt_dialog.
离线
最后一次露面:7个月4天前
职员
加入:2015-06-08 11:34
嗨liuluan002,

嗨liuluan002,

在你提到的帖子中显示的代码只是捕捉一个非连接广告的结尾(设备正在发布广告,你发出一个停止命令,导致广告停止,你得到一个提示,你的设备停止了广告)。你说你无法从其他设备捕捉到广告包装是什么意思?为了从其他设备获得ble包,你必须成为一个扫描仪,以便嗅探来自其他外设的广告包。

谢谢mt_dialog.

Liuluan002.
离线
最后一次露面:10个月2个星期前
加入:2015-11-27 14:24
我在用蓝牙扫描仪

我使用基于RN4020芯片制作的蓝牙扫描器来捕捉所有广播包中的广告包。我可以看到来自其他芯片RN4020扫描装置的其他信标包,但我看不到来自DA14580的包。

从我的代码中,我刚刚添加了Da1458x_sdk \ 5.0.3 \ projects \ target_apps \ ble_examples \ ble_app_periasieral的项目的以下更改

选项2(正确的选项)是通过catch rest函数(user_catch_rest_hndl)捕获一个不可连接的广告的结尾。你可以把下面的代码放到函数user_peripheral.c中:

案例GAPM_CMP_EVT:
{
Struct gapm_cmp_evt const *msg_param = (Struct gapm_cmp_evt const *)(param);
开关(MSG_PARAM->操作)
{
案例GAPM_ADV_NON_CONN:
user_app_adv_start();//完成后或任何您想要的内容
打破;

默认:
打破;
} 休息;
}

mt_dialog.
离线
最后一次露面:7个月4天前
职员
加入:2015-06-08 11:34
嗨liuluan002,

嗨liuluan002,

由于您没有看到任何广告,而且您没有得到您的广告已停止的指示,可以确保您的设备通过使用Smart Spetpets工具或只是为了确保尝试Android BLE应用程序进行广告?

谢谢mt_dialog.

Liuluan002.
离线
最后一次露面:10个月2个星期前
加入:2015-11-27 14:24
嗨,我可以看到

嗨,我可以从手机看到广告包,但我不能使用mircochip的扫描仪来扫描它。但是使用相同的工具,它可以从同一设备中运行的IBeAcon示例扫描包。你能帮忙吗?是否需要将代码从无连接的广播更改为非连接的广播?我怎么能做到?

mt_dialog.
离线
最后一次露面:7个月4天前
职员
加入:2015-06-08 11:34
嗨liuluan002,

嗨liuluan002,

我不知道你的扫描器能检测到什么样的数据包。如果你想在非连接模式下发布,你可以在SDK的模板项目中使用app_easy_gap_non_connectable_advertise_start()函数。

谢谢mt_dialog.

Liuluan002.
离线
最后一次露面:10个月2个星期前
加入:2015-11-27 14:24
我试过,但仍然没有

我试过,但仍然没有那么差异。来自信标的广播方法和行为是否有很多来自信标示例和da1458x_sdk \ 5.0.3 \ projects \ target_apps \ ble_examples \ ble_app_perifal的示例?

mt_dialog.
离线
最后一次露面:7个月4天前
职员
加入:2015-06-08 11:34
嗨liuluan002,

嗨liuluan002,

信标示例使用两种不同的广告模式(取决于软件配置 - Gapm_adv_non_conn和GapM_Adv_undirect),并且设备的角色在Gap_peripheral_slv中设置pdu类型是adv_nonconn_ind。也是Beacon广告没有扫描响应数据。App_Peripheral AS在Gap_Peripheral_SLV中使用GAPM_ADV_UNDICHICED,具有扫描响应数据,PDU类型使用是ADV_IND。

谢谢mt_dialog.

Liuluan002.
离线
最后一次露面:10个月2个星期前
加入:2015-11-27 14:24
谢谢你的回复,我

谢谢你的回复,我现在试着检查一下。
对于扫描,我们是否有可能只收听一个频道,例如我们只扫描通道37?

mt_dialog.
离线
最后一次露面:7个月4天前
职员
加入:2015-06-08 11:34
嗨liuluan002,

嗨liuluan002,

它不可能只检查个别的广告渠道或检索特定的广告渠道号码。

谢谢mt_dialog.

Liuluan002.
离线
最后一次露面:10个月2个星期前
加入:2015-11-27 14:24
谢谢它现在工作。

谢谢它现在工作。

另一个问题是关于看门狗的
对于项目“BLE_APP_BAREBONE”,我已将WatchDog从“#undef cfg_wdog”更改为“da1458x_config_basic.h”中的“#define cfg_wdog”。然后我将以下代码写入“app_task.c”,然后我发现它在运行后一段时间后,程序停止,如何解决这个问题?看起来看门狗没有运行。能否请你帮忙?再一次非常感谢你。

//设备配置更新
案例GAPM_SET_DEV_CONFIG:
{
if(param-> status!= gap_err_no_error)
{
assert_err(0);// 意外的错误
}
别的
{
If (7 == current_role)
{
#if debug_log.
printf_string(“\ r \ n adv1 \ r \ n”);
UART2_INIT(UART_BAUDRATE_115K2,3);
#万一
而(1)
{
#if debug_log.
printf_string(“\ r \ n WD T”);
如果(USE_WDOG)
{
printf_string (" 1 ");
wdg_reload (WATCHDOG_DEFAULT_PERIOD);
wdg_resume();
}
if(development_debug)
{
printf_string(“2”);
}
printf_string(“\ r \ n”);
UART2_INIT(UART_BAUDRATE_115K2,3);
#万一
}
Record2(Current_role);
Execute_callback_void(app_on_set_dev_config_complete);
}
别的
{
#if debug_log.
printf_string(“\ r \ n adv2 \ r \ n”);
UART2_INIT(UART_BAUDRATE_115K2,3);

#万一
Record2(Current_role);
}
ke_timer_set(app_switch_role_timer,task_app,10);// 10 * 10ms
}
}
打破;

mt_dialog.
离线
最后一次露面:7个月4天前
职员
加入:2015-06-08 11:34
嗨liuluan002,

嗨liuluan002,

我真不明白你到底想干什么。就我所知,程序不打算广告,但它将卡在那while(1)和将总是重载看门狗和打印一些东西。如果程序由于NMI_Handler()(意思是看门狗中断)而停止,那么你可以通过打开内存选项卡并检查地址0x81850找到NMI中断发出的位置,内存窗口中的第七个无符号长整数就是程序计数器。您可以检查这个,以便查看程序在哪里停止。

谢谢mt_dialog.

Liuluan002.
离线
最后一次露面:10个月2个星期前
加入:2015-11-27 14:24
谢谢你!我让它成功

谢谢你!我现在让它工作了

Liuluan002.
离线
最后一次露面:10个月2个星期前
加入:2015-11-27 14:24
有没有办法做

是否有任何方法可以通过UART端口进行软件更新?怎么做?
有任何方法做OTA之间的两个对话框BTLE编程吗?
是否有任何方式我们仍然使用对话框14583的内部闪存的一部分作为传感器数据记录?

mt_dialog.
离线
最后一次露面:7个月4天前
职员
加入:2015-06-08 11:34
嗨liuluan002,

嗨liuluan002,

当前的SUOTA实现使用SPI Flash或I2C eeprom,对于其他用例没有其他实现。

你的意思是一个da是suota的接收者,而另一个da作为中心并更新第一个da的形象?由于大多数spot中心通常是允许上传图像的电话或其他设备,因此没有实现将SUOTA配置文件作为中心。

您可以使用DA的Flash来存储数据除了将上传到DA的图像。信标示例使用SPI内存的空间来存储一些配置数据,我不会看到任何原因为什么不能够用14583执行此操作。

谢谢mt_dialog.