大家好,
我用iOS设备做了一些吞吐量测试,我怀疑ios9.3.1只允许从设备在每个连接事件中发送3个数据包。我想验证我的假设,但我不知道怎么做。我的问题是:如何在一个连接事件期间协商可以发送的数据包数?换句话说,从设备如何知道在一个连接间隔期间它可以发送多少个包?我假设在建立连接的某个时间点,主机会将该信息发送给从机,但我找不到该信息(我试图在代码中找到该信息,并使用嗅探器检查连接的建立)。
谢谢马勃朗
嗨,马勃伦,
在一个连接间隔内可以发送的数据包在设备之间是不同的,外围设备不知道中央设备可以接受的数据包的数量,并且设备使用MD标志来关闭连接间隔,如果设置了MD标志,则在发送当前数据包时,外围设备意味着外围设备具有更多的数据包要发送的数据,如果中心可以接受数据包,那么它将用一个空数据包进行应答,并保持连接的活动状态。如果客户想关闭连接,他不会回复发送的数据包,数据包应该再次发送到下一个连接间隔。
谢谢你的对话
正如MT\u dialog提到的,主节点最终决定了每个连接事件的长度。从属服务器不知道特定连接的连接事件可能持续多长时间。
我们在一些Android和iOS手机上做了一些测试。他们的行为似乎差不多。如果只有一个连接,它通常可以在每个连接事件中发送3到4个数据包。但如果您同时有3个或更多连接,则在每个连接事件中通常会减少到2个数据包。
决定连接事件长度的并不是Android或iOS,而是手机中的蓝牙芯片。它自己安排连接。但是,在HCI层有一个选项“min/max connection event length”,可以在创建连接时设置该选项,以指示连接事件的长度。但至少Android没有设置这个选项。如果您使用DA14580作为中心,您可以轻松地将此值设置得相当高,并在一个连接事件中发送许多数据包,最多18个左右。
嗨,马勃伦,
在一个连接间隔内可以发送的数据包在设备之间是不同的,外围设备不知道中央设备可以接受的数据包的数量,并且设备使用MD标志来关闭连接间隔,如果设置了MD标志,则在发送当前数据包时,外围设备意味着外围设备具有更多的数据包要发送的数据,如果中心可以接受数据包,那么它将用一个空数据包进行应答,并保持连接的活动状态。如果客户想关闭连接,他不会回复发送的数据包,数据包应该再次发送到下一个连接间隔。
谢谢你的对话
正如MT\u dialog提到的,主节点最终决定了每个连接事件的长度。从属服务器不知道特定连接的连接事件可能持续多长时间。
我们在一些Android和iOS手机上做了一些测试。他们的行为似乎差不多。如果只有一个连接,它通常可以在每个连接事件中发送3到4个数据包。但如果您同时有3个或更多连接,则在每个连接事件中通常会减少到2个数据包。
决定连接事件长度的并不是Android或iOS,而是手机中的蓝牙芯片。它自己安排连接。但是,在HCI层有一个选项“min/max connection event length”,可以在创建连接时设置该选项,以指示连接事件的长度。但至少Android没有设置这个选项。如果您使用DA14580作为中心,您可以轻松地将此值设置得相当高,并在一个连接事件中发送许多数据包,最多18个左右。