嗨对话框
DSPS_HOST连接到所有可用的DSPS_DEVICES(6),
1。DSPS_HOST将发送DATA_REQUSET(每10毫秒)到DSPS_DEVICE(顺序所有六个设备)然后DSPS_DEVICE将响应数据(顺序),一旦数据TX完成,DSPS_DEVICE(全部六个)将睡觉),因此接下来10分钟是没有数据Tx,所以DSPS_DEVICE将睡眠(没有断开)。假设在3分钟后或5分钟后(在10分钟间隔完成之前),我希望来自DSPS_DEVICE的数据,DSPS_HOST将DATA_REQ发送到DSPS_DEVICE ??dsps_device会醒来并回复吗?这该怎么做 ??
2:从DSPS_Device中,我正在使用user_send_ble _data()将数据发送到dsps_host,一旦数据tx完成,那么如何将DSPS_Device放入睡眠状态??(没有断开连接)。
谢谢你!
设备:
嗨prasanth,
1)我不确定你的感知睡眠如何,580睡觉,当存在一个活着的连接时自动醒来,这意味着580将始终在与主机连接建立期间设置的预定义时间中唤醒,这被称为连接间隔。连接间隔具有限制(7.5ms最多4s),因此当我们说设备睡眠时,设备会在两个连续连接间隔之间睡眠。因此,您无法连接,并在您描述的金额中保持永久睡眠状态。如果您在此时间内睡眠,则设备将断开连接,如果您想交换数据,您必须建立新连接。因此,如果您想用那个时间进行这样做,您必须断开连接,然后再次连接。
2)正如我提到的,设备会自动进入睡眠状态,如果没有BLE事件服务,设备将休眠,并将唤醒到下一个连接间隔,以保持连接活跃。如果你希望你的设备永远睡觉,直到一个事件发生时(gpio唤醒中断或内核计时器事件)你必须断开主机和一般不安排任何祝福事件和设置你的唤醒状态,这样的设备将继续睡,直到唤醒条件满足。
谢谢mt_dialog.
嗨对话框
感谢你的回复,
DSPS_DEVICE连接到DSPS_HOST,
dsps_device <=接收数据req dsps_host,
DSPS_DEVICE =>响应数据DSPS_HOST,一旦数据发送完成,DSPS_DEVICE是否进入睡眠,??如何启用睡眠一旦数据传输完成和哪个是最好的地方启用睡眠?(void user_send_ble_data(const uint8_t *data, uint16_t length))
),.在启用睡眠之后,DSPS_DEVIEC睡眠让我们说10分钟,我怎能醒来?我必须再次从DSPS_HOST扫描到建立连接吗?
谢谢你!
嗨prasanth,
正如之前提到的,为了设置设备休眠(我想你的意思是永久休眠),你将不得不断开连接,这意味着你将不得不从设备发送一个断开连接的命令。因此,在获取所有数据后,您可以发出app_easy_gap_disconnect()来终止连接,不要开始发布并调用arch_ble_ext_wakeup_on(),以避免每10秒唤醒一次(默认行为)。
现在保持睡10分钟是相当大的时间为580年,内核定时器支持多达5分钟时间,但是你可以设置定时器5分钟,醒来,重置计时器为另一个5分钟的,第二次计时器流逝你可以开始广告或扫描。
由于您知道连接设备的BD地址,您可以直接发出连接请求而不扫描,但如果没有具有该地址的设备,则意识到连接命令将在已取消或找到设备之前执行并确认连接,它不会像扫描命令一样超时。
谢谢mt_dialog.
嗨对话框
对不起……
在不断开DSPS_HOST连接的情况下,DSPS_DEVICE处于延长睡眠状态的最大持续时间是多少?
Q2:考虑DSPS_DEVICE是否可以延长睡眠5分钟,并且每5分钟醒来一次(没有断开连接),在这之间,在第2分钟,如果我想从DSPS_DEVICE获取数据,DSPS_MASTER是否可以请求DSPS_DEVICE的数据?(DSPS_HOST能否在2分钟唤醒DSPS_DEVICE并获取数据??)
嗨prasanth,
Q1。你的意思是 ?如果设备未接收指定时间的数据包(监控超时参数),则设备将此链接视为丢失。如果您的意思是您在不必断开与其他设备中的休眠状态,则意味着DSP中的连接间隔为12.5ms。
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(param);
ARCH_PRINTF(“设备已断开\ r \ n”);
app_easy_gap_advertise_stop ();
// ARCH_SET_EXTEDDE_SLEEP();
wrbl_env2。Sensor_read_time_1 = app_easy_timer(1000, wake_up_sm);// 1000 -> 10秒// 30000 -> 5分钟
}
空白wake_up_sm(空白)
{
/ / 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显示设备在永久睡眠),为什么??在唤醒DSPS_DEVICE的5分钟间隔后,我还需要做什么修改吗?
谢谢你!
嗨对话框
void user_on_disconnect(struct gapc_disconnect_ind const * param)
{
default_app_on_disconnect(param);
ARCH_PRINTF(“设备已断开\ r \ n”);
app_easy_gap_advertise_stop ();
arch_ble_ext_wakeup_on ();
// ARCH_SET_EXTEDDE_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);
}
空白wake_up_sm(空白)
{
/ / arch_disable_sleep ();
arch_ble_ext_wakeup_off ();
app_easy_gap_undircated_advertise_start(); // app_easy_gap_undircted_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-semicondiondiondum/can-you-maintain-connection-
正如上面提到的链接
“您可以使用连接更新功能来请求较大的连接间隔和从延迟到中央的延迟。这将允许您与中央保持联系,较长的睡眠时间。请注意,这是决定这两个的中心参数。 ”
所以DSPS_DEVICE可以休眠更长的时间(确切的持续时间??),而不断开与DSPS_HOST的连接??
谢谢对话框
嗨prasanth,
在该帖子上提到的是没有定义的DSP,但是符号规格,是的,您可以更新DSP设备的连接参数,但这是在主机端决定的内容。例如,如果连接到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(param);
ARCH_PRINTF(“设备已断开\ r \ n”);
app_easy_gap_advertise_stop ();
arch_ble_ext_wakeup_on ();
// ARCH_SET_EXTEDDE_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);
}
空白wake_up_sm(空白)
{
/ / arch_disable_sleep ();
arch_ble_ext_wakeup_off ();
app_easy_gap_undirected_advertise_start ();
}
在Data Tx完成后,我正在调用app_easy_gap_disconnect(con_id)从user_sps_server_data_tx_cfm_handler(),
经过一段时间20或30分钟,DSP设备进入永久性睡眠,我没有看到任何广告。
一旦我关闭和再次打开它开始广告。
谢谢你!
嗨prasanth,
,您提供的信息不充分为了让我有一个想法,会发生什么你仍然必须检查设备是否正常运行,它不停止由于监管机构或Hardfault处理程序一般是什么设备的状态时停止广告,你的代码是否通过广告完成回调?
谢谢mt_dialog.