1.为了使建立的连接(成对与否),设备必须唤醒并侦听请求(在您的情况下的连接请求),因此如果扫描仪侦听一个广告事件并启动连接康复请求将发送联系请求由主人在下一个广告事件的外围设备,您可以尝试的是指示广告如果它适合您,在这种情况下,您的设备将EMMIT指向扫描仪的广告事件以便连接(程序是耗电和耗电量您可以直接向特定中央进行广告,具有已知的蓝牙地址。因此,一个想法可以是为了向大量的时间广告广告,而在您没有可用的中央BD地址,当中央找到您的设备时,您可以建立连接(由于我解释的原因,初始连接将耗时。以上)。之后,每次未连接时,您将直接向该中心进行广告,并且您将比无向广告过程更快地连接。但是我重复那个定向的普遍是耗电,1.28秒后自动停止,没有任何广告数据(没有广告数据意味着您无法连接到DSPS android&iOS应用程序也必须重新配置580主机接受指示的广告请求,您将不得不知道中心的地址)。您可以在有或没有安全性的情况下实现上面的。根据您的设备的用例,上述可能是解决方案。 Also since from what i can tell you care about low power consumption, what you can do is keep the undirected advertising and gradually increase the advertising interval while there is no activity (being with no connection for quite sometime) or, if there is a possibility you can place a button on the device to increase advertising interval so that the user can force a reconnection with no delays.
嗨兰迪宇,
1.您将INTV_MIN和INTV_MAX更改为10000ms?如果您在大约10秒内更改了它,那么在您的设备看到外围设备的广告消息后,中央将要等待侦听第二个广告消息,以便发送连接请求,如果有TRAFIC(未能看到下一个广告消息)它也可能等待更长。
2.广告命令在唤醒并发送广告命令后不会超时,只要您不会取消命令,它会宣传。只有在指示的广告上只有一个超时。广告数据包仅通过间隔集定义,如果您将其设置为10秒,则每10秒钟将3个广告消息(每个广告频道一个)发送3个。
3.它约为10.24秒,可以检查此功能的BLE规范。
4.检查此线程的答案http://support.dialog-semicondiondiondum/help-help-help-cant-go-deep-slee ...在第10篇文章。
谢谢mt_dialog.
1.如果我修改设备和中部配对,那么时间将减少用于连接和发送数据。如果是这样,你可以给我配对的例子。
2.你说的时间间隔?我不太明白,我可以改变它吗?如果我想要将它更改为每10秒钟,请发送10个广告汇率。需要我改变它来改变它。
3.我抱歉,我的英语不是很好。我的意思是INTV的参数,它可以设置的最大值。我希望它睡眠约10分钟
谢谢你
嗨兰迪宇,
1.为了使建立的连接(成对与否),设备必须唤醒并侦听请求(在您的情况下的连接请求),因此如果扫描仪侦听一个广告事件并启动连接康复请求将发送联系请求由主人在下一个广告事件的外围设备,您可以尝试的是指示广告如果它适合您,在这种情况下,您的设备将EMMIT指向扫描仪的广告事件以便连接(程序是耗电和耗电量您可以直接向特定中央进行广告,具有已知的蓝牙地址。因此,一个想法可以是为了向大量的时间广告广告,而在您没有可用的中央BD地址,当中央找到您的设备时,您可以建立连接(由于我解释的原因,初始连接将耗时。以上)。之后,每次未连接时,您将直接向该中心进行广告,并且您将比无向广告过程更快地连接。但是我重复那个定向的普遍是耗电,1.28秒后自动停止,没有任何广告数据(没有广告数据意味着您无法连接到DSPS android&iOS应用程序也必须重新配置580主机接受指示的广告请求,您将不得不知道中心的地址)。您可以在有或没有安全性的情况下实现上面的。根据您的设备的用例,上述可能是解决方案。 Also since from what i can tell you care about low power consumption, what you can do is keep the undirected advertising and gradually increase the advertising interval while there is no activity (being with no connection for quite sometime) or, if there is a possibility you can place a button on the device to increase advertising interval so that the user can force a reconnection with no delays.
2.如果您在.intv_min设置和.intv_max MS_TO_BLESLOTS的值(10000)广告间隔将集在10秒,这意味着该装置将被睡眠约10秒钟,然后退出睡眠模式的自动重新发布和睡眠。您无法通过广告命令控制广告数据包的数量,您必须实现一个计数器,以计算从您的设备授予的广告消息。
3.广告的最大值是通过规范10.24秒,如果您想要的更多,您必须使用ke_timer来实现自定义广告方案。定时器可以作为最大值为300秒(5分钟),但您可以唤醒并重置该计时器并重新返回睡眠状态。
谢谢mt_dialog.
因为我希望我的设备可以使用电池工作3年,因此直接宣传不适合我。虚荣心
你说我可以“实现柜台以计算揭示的广告消息”。
我认为这是一个好主意,我的问题是,但我不知道哪个职位可以改变它。
**************************************
我试图改变它,
A.睡觉
B.Open Printf控制台
c.add a avd_counter ++;在app_easy_gap_undirected_advertsie_start()中
并写一个ARCH_PRINTF
但我发现该函数只执行一次。
很想,我的Android应用程序也可以扫描它。有没有ober位置和功能
发送广告?
3.我可以实现自定义宣传方案吗?
你能给我一个详细的描述或一个例子吗?
非常感谢你
亲爱的对话框
我想用另一个定时器来解决上面的问题,代码粘贴在这里
void adv_timer_fsm(void)
{
静态UINT8_T ADV_STATE = ADV_INIT_STATE;
ARCH_PRINTF(“adv_timer_fsm \ r \ n \ r \ n”);
切换(Adv_state)
{
case adv_init_state:
ARCH_PRINTF(“adv_init_state \ r \ n \ r \ n”);
spss_env.adv_tmr_hndl = app_easy_timer(10,spsss_env.adv_timer_cb);
Adv_state = Adv_Modify_State;
休息;
case av_modify_state:
ARCH_PRINTF(“停止advtise \ r \ n \ r \ n”);
app_easy_gap_advertise_stop();
spss_env.adv_tmr_hndl = app_easy_timer(6000,spss_env.adv_timer_cb);// Q1
adv_state = adv_cycle_state;
休息;
案例adv_cycle_state:
ARCH_PRINTF(“adv_cycle_state \ r \ n \ r \ n”);
default_advertise_operation();
spss_env.adv_tmr_hndl = app_easy_timer(300,spsss_env.adv_timer_cb); Q2
Adv_state = Adv_Modify_State;
休息;
默认:
休息;
}
}
我的问题是:
Q1:在Q1现在的位置代码(代码段)这是否可以停止宣传和睡眠60秒?60年代之后,设备唤醒
spss_env.adv_tmr_hndl的计时器
Q2:Q2帖子的代码(上文代码)此帖子中的此代码可以启动广告和持续3S?(我已将广告间隔修改为100,
这个值的最小值是多少?
我有一个测试,但结果并不是很理想。当连接时,我的从站将数据包发送到掌握,而且大师都有ack.在我收到的地方
该ACK,我叫app_easy_gap_disconnect(spss_env.con_info.conidx),它有一点点断开(实际上,我只相信user_on_disconnect已执行),但很短的时间后,
它再次连接(我希望它睡眠1分钟,并由Timer SPSSS_ENV.Adv.Admr_hndl = app_easy_timer唤醒(6000,spss_env.adv_timer_cb);)。
你能给我一个建议如何修改它。
非常感谢你
嗨兰迪宇,
我没有得到你想要与上述代码一起做的事情。
我没有看到广告消息的测量如何帮助您更快地连接,App_easy_gap_undircated_advertise_start()只执行一次,然后设备通过所设置的间隔进行广告。为了计算您emmited的广告消息,您可以遵循信标项目中的示例。请在App_Asynch_trm()函数中检查实现,执行将检查BLE的最后一个状态是否是BLE_END_EVT并将递增APP_ADVERTESE_COUNTER,您可以使用此实现以计算您的消息。
谢谢mt_dialog.
当你说的时候,我有变化,但计数器不精确,我已经设置了最大计数器= 20,但我有嗅探器49。
嗨兰迪宇,
我不确定是否与嗅探器进行比较是可靠的比较,据我所知,如果您正在跟踪每个BLE事件的末尾,那么方法是正确的。只要记住,为了跟踪您应该在广告状态的广告消息中,如果不是,则计数器也将测量连接的事件。关于与我所提到的方法的嗅探器比较,计数器将在每个频道(37,38,39)上进行一次广告(37,38,39),这将计入嗅探器上的3个广告消息,也据我所知,也是嗅探物,不会显示如果空气上有任何广告包碰撞,则广告消息。
谢谢mt_dialog.