13 协议栈能力
对于不同的软件包、不同的芯片系列,协议栈能力不同,汇总63于表 13.1,表 13.2 和 表 13.3。
系列 | 广播集数目 | 连接数目 | 白名单容量 | CTE | 最大 MTU |
---|---|---|---|---|---|
ING9188X | \(8\) | \(8\) | \(16\) | \(\checkmark\) | \(247\) |
ING9187X | \(8\) | \(8\) | \(16\) | \(247\) | |
ING9168X | \(5\) | \(5\) | \(8\) | \(\checkmark\) | \(247\) |
系列 | 广播集数目 | 连接数目 | 白名单容量 | CTE | 最大 MTU |
---|---|---|---|---|---|
ING9188X | \(8\) | \(26\) | \(24\) | \(\checkmark\) | \(247\) |
ING9187X | \(8\) | \(26\) | \(24\) | \(247\) | |
ING9168X | \(5\) | \(10\) | \(10\) | \(\checkmark\) | \(247\) |
系列 | 广播集数目 | 连接数目 | 白名单容量 | CTE | 最大 MTU |
---|---|---|---|---|---|
ING9188X | \(1\) | \(1\) | \(4\) | \(\checkmark\) | \(247\) |
ING9187X | \(1\) | \(1\) | \(4\) | \(247\) | |
ING9168X | \(1\) | \(1\) | \(4\) | \(\checkmark\) | \(247\) |
通过 ll_get_capabilities
和 btstack_get_capabilities
可分别获取链路层和 Host 的协议栈能力64。
13.1 “非标”扩展
软件包 extension 和 exp 包含一系列“非标”扩展。这些扩展多为放松参数限制,可供开发者测试、对比。 使用这些“非标”扩展将带来兼容性问题,故需谨慎,并遵循相关管理规定。
以下扩展功能各型号芯片皆可支持,具体表现依赖于芯片本身的处理能力:
允许广播最小间隔小于 \(20ms\),最小间隔取决于数据包空口时长;
允许连接间隔小于 \(7.5ms\),最小间隔取决于时间单位(默认 \(1.25ms\))、芯片处理能力及数据包空口时长;
自定义连接间隔的时间单位;
void ll_set_conn_interval_unit( uint16_t unit); // 自定义的时间单位(微秒)
在扩展广播上附着 CTE65;
int ll_attach_cte_to_adv_set( uint8_t adv_hdl, // 广播集句柄 uint8_t cte_type, // CTE 类型(0 为 AoA) uint8_t cte_len, // CTE 长度 // 用于 AoD 发送的天线切换模板的长度 uint8_t switching_pattern_len, // 用于 AoD 发送的天线切换模板 const uint8_t *switching_pattern);
锁频66;
// 锁频 void ll_lock_frequency( int freq_mhz); // 频点(单位:MHz) // 解锁 void ll_unlock_frequency(void);
Raw Packet;
详见 Controller API Reference。
以下扩展功能不适用于 ING918 芯片家族:
允许传统广播数据长度超过 \(31\) 字节,最大 \(249\) 字节;
自定义数据白化初值;
void ll_override_whitening_init_value( uint8_t override, // 是否启用 uint8_t value); // 自定义的初值
自定义广播数据包 PDU 类型;
void ll_allow_nonstandard_adv_type( uint8_t allowed, // 是否允许 uint8_t type); // 自定义的PDU 类型
自定义 CTE 比特。
void ll_set_cte_bit( uint8_t bit); // CTE 比特(默认为 1)