1.广播如果数据需要更新?
按照我们朴素的想法,先 通过 HCI 指令下 Disable,再传 adv_data,再Enable。
CEVA中llm_adv.c, hci_le_set_adv_data_cmd_handler 程序不是这样的逻辑,Enable的情况下,更新数据。
之前,我们给的内存太少,支持CFG的act 事件就只有两个。按照原有程序逻辑和大于2的act事件,更新数据是没问题。
内存不改,不想更改cfg,act事件也只有两个。
一般的想法,之前的广播数据会释放,然后再填入新的广播数据。
这个里面,并没有先释放旧的广播数据,而是做了一系列的判断,个人不知道为啥。但是act只有两个,不释放,再填写的情况,那么act 超过两个,也就出现内存不够。
所以必须 先释放旧的广播数据,再填写。
2. ADI
为啥要提到ADI,因为广播数据更新之后,DID 值变化。DID的生成是随机值,用来标注广播数据的变化。SID 只是用来 表示广播集。
这些从host 下发指令,更新数据是从host下发HCI的。
ADI 的更新,也就意味 host 重新发一次事件。
3. 扩展包
这个是 ADV_EXT_IND,不带adv数据的。
这个就很奇怪,竟然有ACAD,还带数据。