嗨对话框
DSPS_HOST连接到所有可用DSPS_DEVICE(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唤醒中断或内核计时器事件),您必须断开主机连接,并且通常不会安排任何BLE事件并设置您的唤醒状态,这样可以将设备展示保持睡眠状态,直到满足唤醒状态。
由于MT_dialog
嗨对话框
感谢你的回复,
DSPS_DEVICE连接到DSPS_HOST,
DSPS_DEVICE <=接收数据所需物品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分钟并将其重置5分钟计时器经过您可以启动广告或扫描。
既然你知道了连接设备的蓝牙地址,你可以直接发出连接请求,而不扫描,但如果没有与该地址没有设备注意连接命令将被执行,直到取消或直到设备被发现,确认连接,它并不像扫描命令超时。
由于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。你的意思是 ?如果设备没有收到指定的时间(监督超时参数)的分组设备认为该链接为丢失。如果你的意思是你可以在睡了多久,而不从其他设备无需断开,这意味着在DSPS您的连接时间间隔为12.5ms。
Q2。你不能在永久睡眠中睡5分钟,没有TX / RX交易在BLE和你的设备仍然连接,如果这是你的意思,你将必须定期醒来,以保持一个活跃的连接和580延长睡眠周期性地唤醒每个连接间隔,请参阅此类信息的BLE规范以及BLE如何运作,因为它不是特定的DSP,但它与BLE规范有关。
由于MT_dialog
嗨对话框
正如您所建议的,我更改了DSPS_DEVICE项目
无效user_on_disconnect(结构gapc_disconnect_ind常量* PARAM)
{
default_app_on_disconnect(PARAM);
arch_printf( “设备断开\ r \ n”);
app_easy_gap_advertise_stop();
// arch_set_extended_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分钟间隔后,我还需要做什么修改吗?
谢谢你
嗨对话框
无效user_on_disconnect(结构gapc_disconnect_ind常量* PARAM)
{
default_app_on_disconnect(PARAM);
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,wak_up_sm);// 1000 - > 10s
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(); // app_easy_gap_undirected_advertise_with_timeout_start(user_default_hnd_conf.advertise_period,NULL);
}
有时计时器正常工作,有时不是,DSPS_DEVICE不会断开连接?,帮助我通过ble_timer唤醒dsps_device(app_easy_timer)..
嗨prasanth,
你的问题是,如果在5分钟后将计时器唤醒你,那么设备在断开连接后无法醒来。你是什么意思,唤醒它不适合并且电力分布器表明该设备处于永久睡眠状态?如果你断开连接并且你不开始宣传,那么就没有任何东西可以做到(没有越来越多的事件,所以它睡觉,直到它被指示)。从您粘贴的代码中,断开连接后,设备应在永久性睡眠中恢复10秒(或无论您的连接是什么),然后应该发生定时器,并且广告应该开始。如果在10秒后无法看到您的设备广告,请检查指定时间后的定时器回调是否已执行。
同时删除default_app_on_disconnect(),因为你想睡觉的时间具体数额,该功能再次启动广告,也因为你删除,你也可以去掉app_easy_advertise_stop(),因为不会有广告功能。
关于设备不会断开恰好发生的连接?您从设备断开连接,链接仍处于活动状态?它意味着“有时定时器正常工作,有时候不是”设备不会按时醒来?尝试调试代码并检查相应的处理程序是否发生,我在DSP上检查并在断开连接后启动了计时器,我看不到任何问题。
由于MT_dialog
嗨对话框
HTTPS://support.dialog-semiconductor.com/can-you-maintain-connection-whi ...
如上所述
“你可以使用连接更新功能要求更大的连接间隔,并从延迟到中央,这将让你保持与中央睡眠时间。注意较长时间的连接,这是高达中央到这两个决定参数。 ”
所以DSPS_DEVICE可以休眠更长的时间(确切的持续时间??),而不断开与DSPS_HOST的连接??
谢谢对话
嗨prasanth,
什么在那个帖子提到没有DSP的定义,但BLE规范定义的,是的,你可以更新DSPS设备的连接参数,但这个东西是在主机侧决定。例如,如果你连接到一个Android应用程序,您指示连接的中央所希望的连接间隔x和y,中央会,以决定是否要接受这些值,如果它没有周边将有保持与中央设置的值会。
DSPS应用程序甚至旨在以指定的间隔工作,以便实现指定的数据吞吐量,如果您对中央的参数更新进行了更长的时间间隔,中央接受它(我不确定在DSPS Android中应用程序将接受除了当前一个之外的参数,它将影响传输的数据量,换句话说(较大的间隔意味着较少的吞吐量)。BLE规范指定的较大间隔为4秒。但即使这也有一个功率消费权衡,因为你越远没有与另一边的沟通越多,你的时钟 - 在外围和主漂移之间的时间越长,这意味着,至少当两个设备进行通信时的时间,至少在外围设备,您必须打开接收器的时间更大。所以理论上对于DSPS I Suids,您可以使用4S的连接间隔并假设延迟0,只有每4秒交换数据,或者延迟更长,但= 0.但随着我提到之前提到的正常功能DSP定义为参考设计的当前设置,除了这些值之外,没有其他测试,可以确保DSP应用程序的适当吞吐量和数据有效性。
由于MT_dialog
嗨对话框
在dsps设备项目()
无效user_on_disconnect(结构gapc_disconnect_ind常量* PARAM)
{
// default_app_on_disconnect(PARAM);
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,key_up_sm);// 1000 - > 10s
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 ();
}
我打电话从user_sps_server_data_tx_cfm_handler(app_easy_gap_disconnect(CON_ID))数据TX完成后,
一段时间如20或30分钟后,DSPS设备进入睡眠永久,我没有看到任何广告。
一旦我关闭和再次打开它开始广告。
谢谢
嗨prasanth,
,您提供的信息不充分为了让我有一个想法,会发生什么你仍然必须检查设备是否正常运行,它不停止由于监管机构或Hardfault处理程序一般是什么设备的状态时停止广告,你的代码是否通过广告完成回调?
由于MT_dialog