尽管CI和CE是BLE的概念,EDR其实也有类似的设定,但是BLE是可以由host来参与设置,而EDR却不能。由前面CI的介绍可以知道,CI会影响throughput和power consumption,BLE主打的就是省电,所以可以依靠调整CI适应不同的场景。CI和CE的设置,就在connection parameter里。
Host有两种方式来设定connection parameter:1. 作为central device,主动create LE connection,在create的时候给出minimum和maximum的CI和CE,由controller最终判断用哪个值。2. 在LE连线建立以后,通过connection parameter update的HCI command进行更新,这里又分两种情况: A. 作为central device,是直接下HCI command让controller设定相应的value。B. 作为peripheral device: b.1. 在core spec 4.2之前,只能通过L2CAP的command,请求central device下HCI command修改connection parameter;b.2: 在core spec 4.2,如果controller支持双方直接协商connection parameter,此时peripheral device就可以直接下connection parameter update的HCI command。
但这里又几个必须要注意的地方:1. connection parameter是否update永远是master决定的,slave只能请求。这里master是controller role的概念,而central是BLE GAP的概念,其实这两个都代表同一个意思,就是发起连线的那个device。2. 最终connection parameter生效的值也是取决于controller,即便host确定了minimum和maximum的值,controller依然可以不选择在这个范围内。
网友评论