嗨对话框
DSPS_HOST连接到所有可用的DSPS_DEVICES(6),
1 .DSPS_HOST将Data_requset(每10毫秒)DSPS_DEVICE顺序(所有六个设备),那么DSPS_DEVICE将响应数据(按顺序),一旦完成数据tx, DSPS_DEVICE(六)将睡觉),所以接下来tx 10分钟没有数据,所以DSPS_DEVICE将睡眠(没有断开)。假设在3分钟或5分钟之间(在10分钟间隔结束之前),我想要从DSPS_DEVICE的数据,DSPS_HOST可以发送Data_req到DSPS_DEVICE吗?DSPS_DEVICE是否会唤醒并响应??如何做到这一点?
2:从DSPS_DEVICE,我使用user_send_ble _data()发送数据到DSPS_HOST,一旦数据发送完成,那么如何让DSPS_DEVICE进入睡眠??(没有断开)。
谢谢你!
设备:
嗨prasanth,
1)我不知道你如何看待睡眠,580睡觉和醒来有一个活着时自动连接,这意味着580年总能唤醒一个预定义的时间设置在与主机的连接设置,这叫做连接的时间间隔。连接间隔有限制(7.5ms至4s),所以当我们说设备进入休眠状态时,设备将在两个连续的连接间隔之间进入休眠状态。所以你不能在你的描述中提到的数量连接和永久睡眠。如果你睡了这么长时间,设备将断开连接,如果你想交换数据,你将不得不建立一个新的连接。所以如果你想在这段时间内做到这一点,你必须先断开连接,然后再连接。
2)正如我提到的,设备会自动进入睡眠状态,如果没有BLE事件服务,设备将休眠,并将唤醒到下一个连接间隔,以保持连接活跃。如果你希望你的设备永远睡觉,直到一个事件发生时(gpio唤醒中断或内核计时器事件)你必须断开主机和一般不安排任何祝福事件和设置你的唤醒状态,这样的设备将继续睡,直到唤醒条件满足。
由于MT_dialog
嗨对话框
谢谢您的回复,
dsps_device连接到dsps_host,
DSPS_DEVICE <=接收数据请求
dsps_device =>响应数据dsps_host,一旦数据tx完成,DSPS_DEVICE可以进入睡眠,??如何启用睡眠一旦数据TX完成,哪个是最佳睡眠的地方?(void user_send_ble_data(const uint8_t * data,uint16_t长度)
),。启用睡眠后,DSPS_DEVIEC睡眠让我们说10分钟,我怎么能醒来??我必须再次扫描从DSPS_HOST连接吗??
谢谢你!
嗨prasanth,
如前一篇文章所述,为了将设备设置为睡眠(我想你的意思是永久睡眠),您将不得不断开连接,这意味着您必须从设备发送断开连接命令。因此,在拍摄所有数据后,您可以发出app_easy_gap_disconnect()以终止连接,不要启动广告并调用Arch_ble_ext_WakeUp_on()以每10秒唤醒(默认行为)。
现在保持睡10分钟是相当大的时间为580年,内核定时器支持多达5分钟时间,但是你可以设置定时器5分钟,醒来,重置计时器为另一个5分钟的,第二次计时器流逝你可以开始广告或扫描。
因为你知道的bd地址连接设备可以直接发出连接请求没有扫描,但如果没有设备地址请注意,连接命令将执行,直到取消或直到设备发现和证实了连接,它时间不像扫描命令。
由于MT_dialog
嗨对话框
对不起...
Q1:最大持续时间DSPS_DEVICE可以扩展睡眠状态,从DSPS_HOST断开连接,
Q2:考虑如果DSPS_DEVICE可以延长睡眠5分钟,并且每5分钟(断开断开)唤醒,在2nd min之间,如果我希望来自DSPS_DEVICE的数据可以DSPS_MASTER REQ DSPS_DEVICE进行数据?(DSPS_HOST可以在第2分钟唤醒DSPS_DEVICE并获取数据?)
嗨prasanth,
Q1。你什么意思?如果设备在指定的时间内(监控超时参数)没有收到数据包,则认为该链路丢失。如果你指的是在不断开与其他设备连接的情况下,你可以在睡眠中保持多长时间,这意味着你在DSPS中的连接间隔是12.5毫秒。
Q2。你不能永久的睡眠5分钟没有TX / RX事务仍然在祝福和你的设备连接,如果这是你的意思,你需要定期醒来为了保持活着,580的连接在延长睡眠醒来定期连接在每一个时间间隔,关于这类信息,请参阅BLE规范以及BLE如何工作,因为它不是特定于DSPS的,但它与BLE规范有关。
由于MT_dialog
嗨对话框
正如您所建议的那样,我改变了DSPS_DEVICE项目
Void user_on_disconnect(struct gapc_disconnect_ind const *param)
{
default_app_on_disconnect(参数);
arch_printf(“设备断开连接\ r \ n”);
app_easy_gap_advertise_stop ();
/ / arch_set_extended_sleep ();
wrbl_env2.sensor_read_time_1 = app_easy_timer(1000,key_up_sm);// 1000 - > 10s // 30000 - > 5min
}
void wake_up_sm(void)
{
// ARCH_DISABLE_SLEEP();
app_easy_gap_undirected_advertise_with_timeout_start (user_default_hnd_conf.advertise_period, NULL);
}
当数据接收到DSPS_HOST,在DSPS_HOST我断开连接DSPS_DEVICE使用
/ /断开连接
app_easy_gap_disconnect (con_id);,
DSPS_DEVICE可以进入睡眠,但唤醒是不合适的(PowerProfiler在永久睡眠中显示设备),为什么呢?在5分钟间隔后,我必须要做的是唤醒DSPS_Device吗??
谢谢你!
嗨对话框
Void user_on_disconnect(struct gapc_disconnect_ind const *param)
{
default_app_on_disconnect(参数);
arch_printf(“设备断开连接\ r \ n”);
app_easy_gap_advertise_stop ();
arch_ble_ext_wakeup_on ();
/ / arch_set_extended_sleep ();
wrbl_env2。Sensor_read_time_1 = app_easy_timer(500, wake_up_sm);// 1000 -> 10秒
app_easy_timer_cancel(wrbl_env2.sensor_read_time_1);
}
void wake_up_sm(void)
{
// ARCH_DISABLE_SLEEP();
arch_ble_ext_wakeup_off ();
app_easy_gap_undirected_advertise_start (); / / app_easy_gap_undirected_advertise_with_timeout_start (user_default_hnd_conf.advertise_period, NULL);
}
有时定时器正常工作,有时不能,DSPS_DEVICE没有断开连接??,帮助我唤醒DSPS_DEVICE通过ble_timer (app_easy_timer)..
嗨prasanth,
你的问题是,设备在断开连接后不会醒来,而你设置了计时器,让你在5分钟后醒来?你说唤醒不正常,功率分析器显示设备处于永久休眠状态,这是什么意思?如果你断开连接,你不开始做广告,没有什么为BLE做(没有即将发生的事件,所以它睡觉,直到它被指示否则)。从你粘贴的代码,在断开连接后,设备应该进入永久睡眠10秒(或无论你的连接是什么),然后计时器应该发生,广告应该开始。如果你在10秒后看不到你的设备广告,检查计时器回调是否在指定的时间之后执行。
还删除default_app_on_disconnect(),因为你想要休眠一段特定的时间,这个函数开始再次广告,也因为你删除了,你也可以删除app_easy_advertise_stop(),因为将没有广告函数。
关于设备没有断开连接到底发生了什么?你断开了设备的连接,但连接仍然是活跃的?这意味着“有时计时器正常工作,有时不”设备不能准时唤醒?试着调试你的代码,并检查如果相应的处理程序发生,我检查了DSPS,并在断开连接后开始了一个计时器,我看不到任何错误。
由于MT_dialog
嗨对话框
https://support.dialog-semiconductor.com/can-you-maintain-connection-whi..。
正如上面提到的链接
“你可以使用连接更新功能向中央请求更大的连接间隔和从延迟。这将使你在更长的睡眠时间里保持与中枢的联系。请注意,这两个参数由中央决定。”
因此,DSPS_DEVICE可以睡眠更长的时间(确切持续时间是什么?)的时间与DSPS_HOST断开连接?
谢谢你的对话框
嗨prasanth,
在那篇文章中提到的不是DSPS定义,而是BLE规范定义,是的,你可以更新DSPS设备的连接参数,但这是由主机决定的事情。例如如果你连接到一个android应用程序显示的连接中心所需的连接间隔x和y,中央将决定是否要接受这些值,如果没有外围将不得不继续由中央设置的值。
更重要的是,DSPS应用程序被设计成按指定的时间间隔工作,以实现指定的数据吞吐量,如果你让一个参数更新命令中央较长间隔和中央接受它(我不确定在需求方android应用程序将接受参数除了当前)将影响网络传输的数据量,换句话说(大间隔意味着更少的吞吐量)。BLE规范指定的较大间隔是4秒。但即使这权力consumtion权衡,因为你呆不与对方沟通的时间越长你的时钟-外围和主人之间的漂移,这意味着,当它的时间两个设备沟通,至少在外围设备方面,你需要打开听筒很长一段时间。所以从理论上讲对于DSPS,我假设您可以使用4秒的连接间隔,并假设延迟为0,数据将仅每4秒交换一次,或者甚至更久,如果延迟!= 0。但正如我前面提到的,DSPS的适当功能是根据参考设计的当前设置定义的,除了这些值之外,没有其他测试可以确保DSPS应用程序的适当吞吐量和数据有效性。
由于MT_dialog
嗨对话框
在DSPS设备项目()中
Void user_on_disconnect(struct gapc_disconnect_ind const *param)
{
/ / default_app_on_disconnect(参数);
arch_printf(“设备断开连接\ r \ n”);
app_easy_gap_advertise_stop ();
arch_ble_ext_wakeup_on ();
/ / arch_set_extended_sleep ();
wrbl_env2。Sensor_read_time_1 = app_easy_timer(6000, wake_up_sm);// 1000 -> 10秒
app_easy_timer_cancel(wrbl_env2.sensor_read_time_1);
}
void wake_up_sm(void)
{
// ARCH_DISABLE_SLEEP();
arch_ble_ext_wakeup_off ();
app_easy_gap_undircated_advertise_start();
}
我正在调用app_easy_gap_disconnect(con_id)从user_sps_server_data_tx_cfm_handler()后的数据tx完成,
经过一些时间,比如20或30分钟,DSPS设备进入永久睡眠,我没有看到任何广告。
一旦我再次关闭,它就会启动广告。
谢谢你!
嗨prasanth,
您提供的信息是不充分的,以便让我有一个想法可能发生的事情,你必须检查设备是否仍然正确运行,并且由于看门狗或一般硬盘处理程序而不会停止它设备停止广告时的状态是什么,您的代码是否通过广告完成回调?
由于MT_dialog