Biu~观众老爷们,大家在做开发时有没有觉得心闷、心慌、心率不正,常常头晕脑痛,失眠多梦。Emmm~在下患有此症,询医多次,未得根治。一日,神游码海之中,忽有灵光一现,晃然大悟。今码地三分,作物频换,尚未习熟,便又换之,变幻莫测,琐事繁多,既不可故技重施,又不得照虎画猫,属实扰人心智。现已知患因,心中巨石便可高高抛出,你丫的,天天更新,更新完了用法还不一样,不一样就算了,说明文档也不搞一个。
开个玩笑,这篇文章是对MIB key使用的说明,这里拿个修改蓝牙特性(feature)为例子做讲解。蓝牙feature就是蓝牙LMP协议层中的特性,这部分设置有很多,包括数据包封包类型、包属性的设置、角色模式的选择等等一系列的设置,感兴趣的可以看看蓝牙协议规范文档,这里主要是讲一下怎么在新的ADK中修改。
小编想修改这个,主要是想把3 Mb/s这个传输速率的特性关了。而在ADK6.x的版本里面,有一个MIB Key PSKEY_LOCAL_SUPPORTED_FEATURES可以修改,他对应的格式是这样的
而在新的ADK中,这个MIB key改了名字,而且格式也换了。也就是说这个key不能直接用到新的ADK上了。
但是新的ADK对这个key的说明仅有位的说明,没有给出任何例子,这个supported_features_mask_t类型也没有找到定义的地方,所以说编译是否成功取决于你格式蒙不蒙得对。这个MIB key你可以在这个路径下找到说明文档
qcc514x-qcc304x-src-1-0_qtil_standard_oem_earbud/adk/docs/mib_keys/qcc514x_qcc304x/bt_qcc514x_qcc304x.html
同时官方有个QCC514x_QCC304x Supported Features Mask Application Note 80-19383-1 的文档对这个key的说明“详细”复制了一遍,ε=(´ο`*)))唉。
所以想要知道这个key的格式(不仅限于这个key,还有好多这样的坑),你都可以用一个工具去破解。在最新的Bluesuite中有一个config app,这个工具是用来配置MIB key的。怎么使用,可以参考https://www.wpgdadatong.com/blog/detail?BID=B2197这篇博文。在这个工具中,找到Supported Features Mask,点击“add”就能看到他的设置界面了。在默认情况下数据都是为0的,这时需要手动根据自己需要,或者找到上面提到的近似于无用的文档(80-19383-1),里面有介绍每个byte默认的值是多少。其中3Mb/s的设置也改了名,这里的设置是byte3 中的第3位(EDR ACL 8 DPSK mode),将这一位设置为0就代表关闭该功能
设置完之后烧录进芯片就可以了。但我们不可能每次都通过这个去设置,太费劲了。我们需要通过这个软件导出一个htf文件,打开这个文件,我们就可以看到这个MIB key的格式是怎么样的了,将这个key 值添加到工程中对应文件,后续再去修改就变得简单了。
##############################
file=bt5
# SUPPORTED_FEATURES_MASK
SUPPORTED_FEATURES_MASK = \
{ \
\
{ \
0x01 /* 3-slot packets */ , \
0x01 /* 5-Slot packets */ , \
0x01 /* Encryption */ , \
0x01 /* Slot Offset */ , \
0x01 /* Timing Accuracy */ , \
0x01 /* Switch */ , \
0x01 /* Hold Mode */ , \
0x01 /* Sniff Mode */ \
}, \
{ \
0x00 /* Park Mode */ , \
0x01 /* RSSI */ , \
0x01 /* CQDDR */ , \
0x01 /* SCO Link */ , \
0x01 /* HV2 Packets */ , \
0x01 /* HV3 Packets */ , \
0x01 /* u-Law log */ , \
0x01 /* A-Law log */ \
}, \
{ \
0x01 /* CVSD synchronous data */ , \
0x01 /* Paging parameter negotiation */ , \
0x01 /* Power Control */ , \
0x01 /* Transperant SCO Data */ , \
0x00 /* Flow Control Lag */ , \
0x01 /* Broadcast Encryption */ \
}, \
{ \
0x00 /* Reserved */ , \
0x01 /* EDR ACL DQPSK mode */ , \
0x00 /* EDR ACL 8 DPSK mode */ , \
0x01 /* Enhanced inquiry scan */ , \
0x01 /* Interlaced inquiry scan */ , \
0x01 /* Interlaced page scan */ , \
0x01 /* RSSI with inquiry results */ , \
0x01 /* ESCO EV3 packets */ \
}, \
{ \
0x00 /* EV4 packets */ , \
0x00 /* EV5 packets */ , \
0x00 /* Reserved */ , \
0x01 /* AFH capable slave */ , \
0x01 /* AFH classification slave */ , \
0x00 /* BREDR Not Supported */ , \
0x01 /* LE Supported */ , \
0x01 /* EDR ACL 3 slot */ \
}, \
{ \
0x01 /* EDR ACL 5 slot */ , \
0x01 /* Sniff Subrating */ , \
0x01 /* Pause Encryption */ , \
0x01 /* AFH capable master */ , \
0x01 /* AFH classification master */ , \
0x01 /* EDR eSCO DQPSM mode */ , \
0x00 /* EDR eSCO 8 DPSK mode */ , \
0x00 /* EDR eSCO 3 slot */ \
}, \
{ \
0x01 /* Extended Inquiry Response */ , \
0x01 /* Simultaneous LE and BREDR */ , \
0x00 /* Reserved0 */ , \
0x01 /* Simple Pairing */ , \
0x01 /* Encapsulated PDU */ , \
0x00 /* Erroneous Data */ , \
0x01 /* QOS PBF */ , \
0x00 /* Reserved1 */ \
}, \
{ \
0x01 /* Link Supervision Timeout Changed Event */ , \
0x01 /* Inquiry Tx Power Level */ , \
0x01 /* Enhanced Power Control */ , \
0x00 /* Bluetooth_Supported_Features_Mask_Reserved_3 */ , \
0x00 /* Bluetooth_Supported_Features_Mask_Reserved_4 */ , \
0x00 /* Bluetooth_Supported_Features_Mask_Reserved_5 */ , \
0x00 /* Bluetooth_Supported_Features_Mask_Reserved_6 */ , \
0x01 /* Extended features */ \
} \
}
##############################
以上是本期博文的全部内容,如有疑问就别在博文下方评论留言了,有什么疑问或想了解的当面和我说(如果你知道我是谁的话ヽ( ̄▽ ̄)و),我会尽量安排上(o´ω`o)و。谢谢大家浏览,我们下期再见。
多看文档,多上官网
多看文档,多上官网
多看文档,多上官网
评论
Biu~
2022年12月16日
Biu~
2022年12月16日
谢工
2022年2月23日