// Minimum connection interval (units of 1.25ms, 80=100ms) if automatic parameter update request is enabled
#define DEFAULT_DESIRED_MIN_CONN_INTERVAL 40
// Maximum connection interval (units of 1.25ms, 800=1000ms) if automatic parameter update request is enabled
#define DEFAULT_DESIRED_MAX_CONN_INTERVAL 800
// Slave latency to use if automatic parameter update request is enabled
#define DEFAULT_DESIRED_SLAVE_LATENCY 0
// Supervision timeout value (units of 10ms, 1000=10s) if automatic parameter update request is enabled
#define DEFAULT_DESIRED_CONN_TIMEOUT 1000
// Whether to enable automatic parameter update request when a connection is formed
#define DEFAULT_ENABLE_UPDATE_REQUEST TRUE
1.
DEFAULT_DESIRED_MIN_CONN_INTERVAL(最小连接间隔)和#define DEFAULT_DESIRED_MAX_CONN_INTERVAL(最大连接间隔)
这个间隔 是指成功连接后 的周期性通讯时间,主机会根据使用情况 在 这个取值范围内 选择合适的 间隔时间,这个具体值是不可控的,所以需要划定一个范围使得通讯响应在自己的可控范围之内。这个具体值会影响到下一次通讯数据包的响应时间,需要根据自己的情况来调整这个范围达到 既省电又匹配程序响应速度 的目的。
比如:
大数据传递时:通讯数据包是连续传递的,主机会选择min值来进行通讯。
无数据传递时:通讯是空闲状态,主机会选择max值来定期询问从机状态,以保持连接不中断。(在空闲时,由于使用max的值作为通讯周期,会影响到程序的下一个命令的发送时间)
2
另外附上苹果对connection interval的要求, 其实还有其他的连接参数要求, 比如slave latency, supervision timeout, 如果不满足这些, IOS设备会拒绝.
● Interval Max * (Slave Latency + 1) ≤ 2 seconds
● Interval Min ≥ 20 ms
● Interval Min + 20 ms ≤ Interval Max Slave Latency ≤ 4 //这个是这样么???
● connSupervisionTimeout ≤ 6 seconds
● Interval Max * (Slave Latency + 1) * 3 < connSupervisionTimeout
DEFAULT_ENABLE_UPDATE_REQUEST:
从机可以向主机发送连接参数更新请求,来请求主机的连接参数 更新到与从机一致。方法是:(参考simpleBLEperipheral.c)
// Whether to enable automatic parameter update request when a connection is formed
#define DEFAULT_ENABLE_UPDATE_REQUEST TRUE
uint8 enable_update_request = DEFAULT_ENABLE_UPDATE_REQUEST;
GAPRole_SetParameter( GAPROLE_PARAM_UPDATE_ENABLE, sizeof( uint8 ), &enable_update_request );
更改这3句代码,来使能或禁止,从机向主机发送连接参数更新请求,只要发送之后 主机就允许 然后连接参数就会变成你 从机端设定的参数 了
假如设置为FALSE 则表示连接参数由主机设置 更从机设置的参数没有关系(可否这样理解)?