醒来但不是宣传

学到更多常见问题解答教程

3个帖子/ 0新
最后一篇
thanhtu131.
离线
最后一次露面:3周1小时前
加入:2018-09-18 17:44
醒来但不是宣传

嗨,我正在创建基于ble_sleepmode_example的操作。作为我的UNSERSTAND,基本操作就是这样的:

步骤1:将在main_function中调用user_app_init()(在user_callback_config.h中注册)。

步骤2:由于user_app_adf_start()在file user_callback_config.h中的struct user_default_app_operations中注册,因此下一步将调用User_App_Adv_Start()。在这个函数中,广告将是Startd,Course函数Adv_Data_update_Timer_CB()将在10S之后调用以停止广告 - >这是由函数app_easy_timer注册的(app_add_data_update_to,adv_data_update_timer_cb)注册;

步骤3:当广告停止时,将调用User_App_Adv_Undirect_Complete(因为此函数在User_callback_config.h中注册)。在此函数中,ARCH_BLE_EXT_WAKEUP_ON()将配置系统将由配置的外部中断源唤醒;之后,调用app_button_enable()被调用以配置上述外部中断源,并且当中断到来时,该功能将被调用,当系统被唤醒时(我不能在此显示细节代码,导致它很长)

步骤4:在下一次睡眠中,系统不会被BLE定时器唤醒,它只由配置的外部中断源唤醒。如果中断到来,系统将唤醒,并调用User_App_Adv_Start()。- >希望从步骤2重复。

现在,我想修改代码,以便它适合我的项目。我将配置两个按钮:BTN1和BTN2作为唤醒控制器的外部源。BTN1将唤醒系统,以便与其他设备进行广告和连接。使用BTN2,我只想唤醒系统来处理来自传感器的一些数据,而不是宣传,也不会连接其他devcices。因此,如果通过BTN2唤醒系统,我将在函数User_App_Adv_Start()中进行一些修改和禁用2行代码:

----> app_addata_update_timer_used = app_easy_timer(app_addata_update_to,avd_data_update_timer_cb);

----> app_easy_gap_undirected_advertise_start();

您可以在actahed pdf文件中看到picture_1中的细节。

我的唤醒外部中断源配置正常。但是BTN2唤醒操作有问题。在函数app_wakeup_cb()中,它将检查ke_state是否是app_connectable(二进制),它将调用user_app_adv_start(),否则它不会调用user_app_adv_start()。在此之前,我放一个日志,结果始终app_db_init(十进制中1个)。所以我暂时陷入困境,下次操作无法启动。您可以在附加的PDF文件中看到picture_2中的细节。

我怎样才能解决这个问题?请帮忙!!我看着你的意见。

附件:
设备:
PM_DIALOG.
离线
最后一次露面:2天14小时前
职员
加入:2018-02-08 11:03
嗨thanhtu131,

嗨thanhtu131,

感谢您的论坛帖子和您的描述。我建议首先检查UM-B-050:DA1458X软件开发人员指南(SDK5)文档和第8.50节,以更好地了解BLE_APP_SLEEPMODE示例,以及回调函数的序列是什么。

关于BTN2,您是否可以分享唤醒控制器的配置方式?您应该按照BLE_APP_SLEEPMODE示例进行操作,并使用不同的回调函数来修改数据。例如,App_wakeu_cb对于BTN2应该是不同的。

谢谢,PM_DIALOG.

thanhtu131.
离线
最后一次露面:3周1小时前
加入:2018-09-18 17:44
嗨,非常感谢你的

嗨,非常感谢您的建议,它适用于我的项目。