dsps_host和dsps_device _sleep

13个帖子/ 0新
最后一篇
prasanth.velliy ...
离线
最后一次露面:2年3个月前
加入:2016-02-18 12:18
dsps_host和dsps_device _sleep

嗨对话框

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放入睡眠状态??(没有断开连接)。

谢谢

设备:
mt_dialog.
离线
最后一次露面:7个月1周前
职员
加入:2015-06-08 11:34
嗨prasanth,

嗨prasanth,

1)我不确定你的感知睡眠如何,580睡觉,当存在一个活着的连接时自动醒来,这意味着580将始终在与主机连接建立期间设置的预定义时间中唤醒,这被称为连接间隔。连接间隔具有限制(7.5ms最多4s),因此当我们说设备睡眠时,设备会在两个连续连接间隔之间睡眠。因此,您无法连接,并在您描述的金额中保持永久睡眠状态。如果您在此时间内睡眠,则设备将断开连接,如果您想交换数据,您必须建立新连接。因此,如果您想用那个时间进行这样做,您必须断开连接,然后再次连接。

2)由于我提到的设备自动睡觉,如果您没有BLE事件可以休眠设备将睡眠,并将唤醒到下一个连接间隔,以保持连接。如果您希望您的设备将永远睡眠,直到事件发生(GPIO唤醒中断或内核计时器事件),您必须断开主机连接,并且通常不会安排任何BLE事件并设置您的唤醒状态,这样可以将设备展示保持睡眠状态,直到满足唤醒状态。

谢谢mt_dialog.

prasanth.velliy ...
离线
最后一次露面:2年3个月前
加入:2016-02-18 12:18
嗨对话框

嗨对话框

感谢你的回复,

dsps_device连接到dsps_host,
dsps_device <=接收数据req dsps_host,
dsps_device =>响应数据dsps_host,一旦数据tx完成,DSPS_DEVICE可以进入睡眠,??如何启用睡眠一旦数据TX完成,哪个是最佳睡眠的地方?(void user_send_ble_data(const uint8_t * data,uint16_t长度)
),.在启用睡眠之后,DSPS_DEVIEC睡眠让我们说10分钟,我怎能醒来?我必须再次从DSPS_HOST扫描到建立连接吗?

谢谢

mt_dialog.
离线
最后一次露面:7个月1周前
职员
加入:2015-06-08 11:34
嗨prasanth,

嗨prasanth,

如前一篇文章所述,为了将设备设置为睡眠(我想你的意思是永久睡眠),您将不得不断开连接,这意味着您必须从设备发送断开连接命令。因此,在拍摄所有数据后,您可以发出app_easy_gap_disconnect()以终止连接,不要启动广告并调用Arch_ble_ext_WakeUp_on()以每10秒唤醒(默认行为)。

现在保持睡眠10分钟是580的时间相当较大,内核定时器支持多达5分钟的时间,但是您可以将计时器设置为5分钟,唤醒并重置计时器另外5分钟并将其重置5分钟计时器经过您可以启动广告或扫描。

由于您知道连接设备的BD地址,您可以直接发出连接请求而不扫描,但如果没有具有该地址的设备,则意识到连接命令将在已取消或找到设备之前执行并确认连接,它不会像扫描命令一样超时。

谢谢mt_dialog.

prasanth.velliy ...
离线
最后一次露面:2年3个月前
加入:2016-02-18 12:18
嗨对话框

嗨对话框

对不起...

Q1:最大持续时间DSPS_DEVICE可以扩展睡眠状态,从DSPS_HOST断开连接,

Q2:考虑如果DSPS_DEVICE可以延长睡眠5分钟,并且每5分钟(断开断开)唤醒,在2nd min之间,如果我希望来自DSPS_DEVICE的数据可以DSPS_MASTER REQ DSPS_DEVICE进行数据?(DSPS_HOST可以在第2分钟唤醒DSPS_DEVICE并获取数据?)

mt_dialog.
离线
最后一次露面:7个月1周前
职员
加入:2015-06-08 11:34
嗨prasanth,

嗨prasanth,

Q1。你的意思是 ?如果设备未接收指定时间的数据包(监控超时参数),则设备将此链接视为丢失。如果您的意思是您在不必断开与其他设备中的休眠状态,则意味着DSP中的连接间隔为12.5ms。

Q2。你不能在永久睡眠中睡5分钟,没有TX / RX交易在BLE和你的设备仍然连接,如果这是你的意思,你将必须定期醒来,以保持一个活跃的连接和580延长睡眠周期性地唤醒每个连接间隔,请参阅此类信息的BLE规范以及BLE如何运作,因为它不是特定的DSP,但它与BLE规范有关。

谢谢mt_dialog.

prasanth.velliy ...
离线
最后一次露面:2年3个月前
加入:2016-02-18 12:18
嗨对话框

嗨对话框

正如您所建议的那样,我改变了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,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吗??

谢谢你

prasanth.velliy ...
离线
最后一次露面:2年3个月前
加入:2016-02-18 12:18
嗨对话框

嗨对话框

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,wak_up_sm);// 1000 - > 10s
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_undircted_advertise_with_timeout_start(user_default_hnd_conf.advertise_period,null);

}
有时计时器正常工作,有时不是,DSPS_DEVICE不会断开连接?,帮助我通过ble_timer唤醒dsps_device(app_easy_timer)..

mt_dialog.
离线
最后一次露面:7个月1周前
职员
加入:2015-06-08 11:34
嗨prasanth,

嗨prasanth,

你的问题是,如果在5分钟后将计时器唤醒你,那么设备在断开连接后无法醒来。你是什​​么意思,唤醒它不适合并且电力分布器表明该设备处于永久睡眠状态?如果你断开连接并且你不开始宣传,那么就没有任何东西可以做到(没有越来越多的事件,所以它睡觉,直到它被指示)。从您粘贴的代码中,断开连接后,设备应在永久性睡眠中恢复10秒(或无论您的连接是什么),然后应该发生定时器,并且广告应该开始。如果在10秒后无法看到您的设备广告,请检查指定时间后的定时器回调是否已执行。

此外,还删除Default_App_On_disconnect(),因为您想要睡眠特定的时间,此函数再次启动广告,此后您还会删除您还可以删除App_easy_Advertise_Stop(),因为没有广告功能。

关于设备不会断开恰好发生的连接?您从设备断开连接,链接仍处于活动状态?它意味着“有时定时器正常工作,有时候不是”设备不会按时醒来?尝试调试代码并检查相应的处理程序是否发生,我在DSP上检查并在断开连接后启动了计时器,我看不到任何问题。

谢谢mt_dialog.

prasanth.velliy ...
离线
最后一次露面:2年3个月前
加入:2016-02-18 12:18
嗨对话框

嗨对话框

https://support.dialog-semicondiondiondum/can-you-maintain-connection-
如上所述
“您可以使用连接更新功能来请求较大的连接间隔和从延迟到中央的延迟。这将允许您与中央保持联系,较长的睡眠时间。请注意,这是决定这两个的中心参数。 ”

因此,DSPS_DEVICE可以睡眠更长的时间(确切持续时间是什么?)的时间与DSPS_HOST断开连接?

谢谢对话框

mt_dialog.
离线
最后一次露面:7个月1周前
职员
加入:2015-06-08 11:34
嗨prasanth,

嗨prasanth,

在该帖子上提到的是没有定义的DSP,但是符号规格,是的,您可以更新DSP设备的连接参数,但这是在主机端决定的内容。例如,如果连接到Android应用程序并且您向连接的中心指示所需的连接间隔是x和y,则中心将决定是否要接受这些值,如果它没有外围设备将具有继续使用中央设置的值。

DSPS应用程序甚至旨在以指定的间隔工作,以便实现指定的数据吞吐量,如果您对中央的参数更新进行了更长的时间间隔,中央接受它(我不确定在DSPS Android中应用程序将接受除了当前一个之外的参数,它将影响传输的数据量,换句话说(较大的间隔意味着较少的吞吐量)。BLE规范指定的较大间隔为4秒。但即使这也有一个功率消费权衡,因为你越远没有与另一边的沟通越多,你的时钟 - 在外围和主漂移之间的时间越长,这意味着,至少当两个设备进行通信时的时间,至少在外围设备,您必须打开接收器的时间更大。所以理论上对于DSPS I Suids,您可以使用4S的连接间隔并假设延迟0,只有每4秒交换数据,或者延迟更长,但= 0.但随着我提到之前提到的正常功能DSP定义为参考设计的当前设置,除了这些值之外,没有其他测试,可以确保DSP应用程序的适当吞吐量和数据有效性。

谢谢mt_dialog.

prasanth.velliy ...
离线
最后一次露面:2年3个月前
加入:2016-02-18 12:18
嗨对话框

嗨对话框
在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,key_up_sm);// 1000 - > 10s
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();

}

在Data Tx完成后,我正在调用app_easy_gap_disconnect(con_id)从user_sps_server_data_tx_cfm_handler(),
经过一段时间20或30分钟,DSP设备进入永久性睡眠,我没有看到任何广告。
一旦我再次关闭,它就会启动广告。

谢谢

mt_dialog.
离线
最后一次露面:7个月1周前
职员
加入:2015-06-08 11:34
嗨prasanth,

嗨prasanth,

您提供的信息是不充分的,以便让我有一个想法可能发生的事情,你必须检查设备是否仍然正确运行,并且由于看门狗或一般硬盘处理程序而不会停止它设备停止广告时的状态是什么,您的代码是否通过广告完成回调?

谢谢mt_dialog.