嗨对话框
DSPS_HOST连接到所有可用DSPS_DEVICE(6),
1.DSPS_主机将向DSPS_设备(所有六个设备按顺序)发送数据请求(每10毫秒一次),然后DSPS_设备将以数据(按顺序)响应,一旦数据发送完成,DSPS_设备(所有六个设备)将进入睡眠状态),因此接下来的10分钟内没有数据发送,因此DSPS_设备将处于睡眠状态(不断开连接)。假设在3分钟或5分钟之后(10分钟间隔结束之前),我想要从DSPS_设备获取数据,DSPS_主机能否向DSPS_设备发送数据_请求??DSP_设备是否会唤醒并响应??怎么做??
2:从DSPS_设备,我使用用户_send_ble_data()将数据发送到DSPS_主机,一旦数据发送完成,那么如何使DSPS_设备进入睡眠状态??(无需断开连接)。
谢谢
设备:
嗨,普拉桑,
1) 我不确定您如何感知睡眠,580进入睡眠状态并在有活动连接时自动唤醒,这意味着580将始终在与主机建立连接期间设置的预定义时间内唤醒,这称为连接间隔。连接间隔有限制(7.5ms到4s),因此当我们说设备进入睡眠状态时,设备在两个连续的连接间隔之间进入睡眠状态。因此,你无法与他人建立联系,也无法因为你在描述中提到的数量而长期处于睡眠状态。如果您睡眠了这么长时间,设备将断开连接,如果您想交换数据,您必须建立新的连接。因此,如果你想在这段时间内完成这项工作,你必须先断开连接,然后再重新连接。
2)由于我提到的设备自动睡觉,如果您没有BLE事件可以休眠设备将睡眠,并将唤醒到下一个连接间隔,以保持连接。如果您希望您的设备将永远睡眠,直到事件发生(GPIO唤醒中断或内核计时器事件),您必须断开主机连接,并且通常不会安排任何BLE事件并设置您的唤醒状态,这样可以将设备展示保持睡眠状态,直到满足唤醒状态。
谢谢你的对话
嗨对话框
谢谢你的回复,
连接到DSPS_主机的DSPS_设备,
DSPS_设备<=接收DSPS_主机所需的数据,
DSPS_设备=>用数据DSPS_主机响应,一旦数据发送完成,DSPS_设备能否进入睡眠状态,??数据发送完成后,如何启用睡眠?哪一个位置是启用睡眠的最佳位置?(无效用户发送数据(常量uint8*data,uint16长度)
),。启用睡眠后,DSPS_设备睡眠10分钟,我如何才能醒来??我必须从DSPS\U主机再次扫描才能建立连接吗??
谢谢
嗨,普拉桑,
如前一篇文章所述,为了将设备设置为睡眠(我想你是指永久睡眠),你必须断开连接,这意味着你必须从设备发送一个断开连接命令。因此,在获取所有数据后,你可以发出一个app_easy_gap_disconnect()要终止连接,请不要开始播发并调用arch_ble_ext_wakeup_on(),以免每10秒唤醒一次(默认行为)。
现在保持睡眠10分钟是580的时间相当较大,内核定时器支持多达5分钟的时间,但是您可以将计时器设置为5分钟,唤醒并重置计时器另外5分钟并将其重置5分钟计时器经过您可以启动广告或扫描。
由于您知道所连接设备的bd地址,因此可以直接发出连接请求而无需扫描,但如果没有具有该地址的设备,请注意,连接命令将一直执行,直到取消或找到设备并确认连接为止,它不会像扫描命令那样超时。
谢谢你的对话
嗨对话框
很抱歉
问题1:在不断开与DSPS_主机的连接的情况下,DSPS_设备可以处于延长睡眠状态的最长持续时间是多少,
Q2:考虑DSPSH设备是否可以在5分钟内长时间休眠,并且每5分钟唤醒一次(在外断开),在这两者之间,在第二分钟内,如果我想从DSPSX设备获得数据,可以DSPSSHOME Req DSPSX设备进行数据吗?(可以DSPSSHOST主机在第二分钟唤醒DSPSH设备并获得数据??)
嗨,普拉桑,
问题1。你什么意思?如果设备没有接收到指定时间的包(监视超时参数),则设备认为此链接丢失。如果您指的是不必断开与其他设备的连接就可以睡眠多长时间,则意味着您在DSP中的连接间隔为12.5ms。
Q2。你不能在永久睡眠中睡5分钟,没有TX / RX交易在BLE和你的设备仍然连接,如果这是你的意思,你将必须定期醒来,以保持一个活跃的连接和580延长睡眠周期性地唤醒每个连接间隔,请参阅此类信息的BLE规范以及BLE如何运作,因为它不是特定的DSP,但它与BLE规范有关。
谢谢你的对话
嗨对话框
正如您所建议的,我更改了DSPS\U设备项目
断开连接时无效用户(结构gapc断开连接ind const*param)
{
断开连接时的默认应用(参数);
arch_printf(“设备已断开连接\r\n”);
app_easy_gap_advertise_stop();
//拱门设置延长睡眠();
wrbl_env2.sensor_read_time_1=app_easy_timer(1000,唤醒)//1000->10s//30000->5min
}
无效唤醒\u sm(无效)
{
//拱_禁用_睡眠();
app_easy_gap_undirected_advision_,带有超时_start(用户_默认值_hnd_conf.advision_period,NULL);
}
当在DSPS_主机中接收到数据时,在DSPS_主机中,我正在使用断开DSPS_设备的连接
//断开连接
应用程序_easy_gap_disconnect(con_id),
DSPS_设备可以进入睡眠状态,但唤醒不正确(powerprofiler显示设备处于永久睡眠状态),为什么?在间隔5分钟后唤醒DSPS_设备时,我还需要做其他任何更改??
谢谢你
嗨对话框
断开连接时无效用户(结构gapc断开连接ind const*param)
{
断开连接时的默认应用(参数);
arch_printf(“设备已断开连接\r\n”);
app_easy_gap_advertise_stop();
ARCH_BLE_EXT_WAKEUP_ON();
//拱门设置延长睡眠();
wrbl_env2.sensor_read_time_1 = app_easy_timer(500,wak_up_sm);// 1000 - > 10s
应用程序\u轻松\u定时器\u取消(wrbl\u环境2.传感器\u读取\u时间\u 1);
}
无效唤醒\u sm(无效)
{
//拱_禁用_睡眠();
ARCH_BLE_EXT_WAKEUP_OFF();
app_easy_gap_undirected_advertized_start()//app_easy_gap_undirected_advision_,带有超时_start(用户_默认值_hnd_conf.advision_period,NULL);
}
有时计时器正常工作,有时不是,DSPS_DEVICE不会断开连接?,帮助我通过ble_timer唤醒dsps_device(app_easy_timer)..
嗨,普拉桑,
你的问题是,如果在5分钟后将计时器唤醒你,那么设备在断开连接后无法醒来。你是什么意思,唤醒它不适合并且电力分布器表明该设备处于永久睡眠状态?如果你断开连接并且你不开始宣传,那么就没有任何东西可以做到(没有越来越多的事件,所以它睡觉,直到它被指示)。从您粘贴的代码中,断开连接后,设备应在永久性睡眠中恢复10秒(或无论您的连接是什么),然后应该发生定时器,并且广告应该开始。如果在10秒后无法看到您的设备广告,请检查指定时间后的定时器回调是否已执行。
同时删除默认的\u-app\u-on\u-disconnect(),因为您想在特定时间内睡眠,此函数将再次开始播发,同时,由于您删除了,您还可以删除app\u-easy\u-adverting\u-stop(),因为将没有播发功能。
关于设备不会断开恰好发生的连接?您从设备断开连接,链接仍处于活动状态?它意味着“有时定时器正常工作,有时候不是”设备不会按时醒来?尝试调试代码并检查相应的处理程序是否发生,我在DSP上检查并在断开连接后启动了计时器,我看不到任何问题。
谢谢你的对话
嗨对话框
https://support.dialog-semiconductor.com/can-you-maintain-connection-whi...
如上所述
“您可以使用连接更新功能向中央计算机请求更大的连接间隔和从机延迟。这将允许您在更长的睡眠时间内保持与中央计算机的连接。请注意,这两个参数由中央计算机决定。”
因此,DSPS_设备可以在不与DSPS_主机断开连接的情况下休眠更长的时间(确切持续时间是多少?)??
谢谢对话
嗨,普拉桑,
这篇文章中提到的不是DSP定义的,而是BLE规范定义的,是的,您可以更新DSP设备的连接参数,但这是由主机端决定的。例如,如果您连接到android应用程序,并且您向连接的中心指示所需的连接间隔为x和y,则中心将决定是否接受这些值,如果不接受,则外围设备必须继续使用中心设置的值。
DSPS应用程序甚至旨在以指定的间隔工作,以便实现指定的数据吞吐量,如果您对中央的参数更新进行了更长的时间间隔,中央接受它(我不确定在DSPS Android中应用程序将接受除了当前一个之外的参数,它将影响传输的数据量,换句话说(较大的间隔意味着较少的吞吐量)。BLE规范指定的较大间隔为4秒。但即使这也有一个功率消费权衡,因为你越远没有与另一边的沟通越多,你的时钟 - 在外围和主漂移之间的时间越长,这意味着,至少当两个设备进行通信时的时间,至少在外围设备,您必须打开接收器的时间更大。所以理论上对于DSPS I Suids,您可以使用4S的连接间隔并假设延迟0,只有每4秒交换数据,或者延迟更长,但= 0.但随着我提到之前提到的正常功能DSP定义为参考设计的当前设置,除了这些值之外,没有其他测试,可以确保DSP应用程序的适当吞吐量和数据有效性。
谢谢你的对话
嗨对话框
在dsps设备项目()中
断开连接时无效用户(结构gapc断开连接ind const*param)
{
//断开连接时的默认应用(参数);
arch_printf(“设备已断开连接\r\n”);
app_easy_gap_advertise_stop();
ARCH_BLE_EXT_WAKEUP_ON();
//拱门设置延长睡眠();
wrbl_env2.sensor_read_time_1 = app_easy_timer(6000,key_up_sm);// 1000 - > 10s
应用程序\u轻松\u定时器\u取消(wrbl\u环境2.传感器\u读取\u时间\u 1);
}
无效唤醒\u sm(无效)
{
//拱_禁用_睡眠();
ARCH_BLE_EXT_WAKEUP_OFF();
app_easy_gap_undirected_advertized_start();
}
数据发送完成后,我正在从用户\u sps\u服务器\u数据\u发送\u cfm\u处理程序()调用应用程序\u easy\u gap\u disconnect(con\u id),
一段时间后,如20或30分钟,DSPS设备进入永久睡眠,我没有看到任何广告。
一旦我关机再开机,它就会开始播放广告。
谢谢
嗨,普拉桑,
您提供的信息不足以让我了解可能发生的情况,您必须检查设备是否仍在正常运行,以及它是否因看门狗或硬故障处理程序而停止。一般来说,设备停止广告时的状态是什么,您的代码是否通过广告完成离子回叫?
谢谢你的对话