中科藍(lán)訊SDK開發(fā)——工程淺析
哈嘍,大家好 ,今天給大家?guī)?lái)的是中科藍(lán)訊 SDK 的工程淺析,希望可以在大家剛拿到中科藍(lán)訊的 SDK 的時(shí)候提供一些幫助,讓大家更快的上手開發(fā) SDK。
一、 工程選擇
當(dāng)拿到中科藍(lán)訊的 SDK 時(shí),在 projects 目錄下通常會(huì)有兩個(gè)工程,分別是 “earphone”,和 “standard”,其中 “standard” 是標(biāo)準(zhǔn)的 SDK 工程,功能比較齊全,除了藍(lán)牙功能外,根據(jù)芯片的不同還可能支持 AUX、Line in、FM、SD Card、U 盤等模式,通常用于開發(fā)藍(lán)牙音箱;“earphone” 工程則是標(biāo)準(zhǔn)工程的精簡(jiǎn)版,以藍(lán)牙功能為主,去掉了其他的一些功能降低芯片的功耗,所以 “earphone” 工程通常用于藍(lán)牙耳機(jī)、TWS 耳機(jī)的開發(fā)。

在一些藍(lán)牙音箱芯片的 SDK 中還會(huì)包括 “l(fā)cd” 和 “karaok” 工程,“l(fā)cd” 工程中包含了點(diǎn)陣屏功能,內(nèi)置了中英文的字庫(kù),“karaok” 工程是 K 歌寶的示例工程,適用于開發(fā) K 歌寶等,根據(jù)所需要的功能,選擇對(duì)應(yīng) SDK 工程來(lái)開發(fā)即可。

二、工程介紹
1、config.h
通過 Code Block 打開工程,在工程中找到 config.h 在這個(gè)文件中,可以對(duì)整個(gè)工程的功能做一些簡(jiǎn)單的配置,例如選擇支持的功能:
選擇系統(tǒng)功能的簡(jiǎn)單配置,以及 Debug Log 輸出口選擇(波特率默認(rèn) 1500000,單線通信):
常用的一些例如充電功能的配置等等,如果看到配置是 xcfg_cb.xxxxx,說明該功能可以通過上位機(jī)在 Download 中進(jìn)行配置,相關(guān)的配置可以參考筆者的博文《中科藍(lán)訊 SDK 開發(fā)——環(huán)境安裝及 Downloader 配置》,配置的詳細(xì)情況可以查看 xcfg.h,因此對(duì)實(shí)現(xiàn)一些簡(jiǎn)單的功能需求,就可以通過修改 config.h 進(jìn)行直接的配置。
2、主要流程
程序的 main 函數(shù)在 main.c 文件中(在 Code Block 中可以通過快捷鍵 AIT + G 搜索工程中包含的文件),main 函數(shù)中,包含了如下內(nèi)容:
除了 reset 的狀況打印之外,還會(huì)進(jìn)入兩個(gè)函數(shù) bsp_sys_init() 和 func_run()。 bsp_sys_init() 是系統(tǒng)各功能的初始化部分,函數(shù)中會(huì)讀取 Downloader 的配置,同時(shí)包含對(duì)芯片各功能的初始化,在 BSP 文件夾中包含了原廠提供的一些底層硬件接口的相關(guān)配置及初始化,如果開發(fā)過程中需要添加使用的其他外設(shè),例如 I2S、I2C,可以把對(duì)應(yīng)的初始化函數(shù)放到 bsp_sys_init() 中。

系統(tǒng)初始化過后進(jìn)入到 func_run() 中,該函數(shù)中主要是進(jìn)入或切換系統(tǒng)的功能,“earphone” 工程中,這里通常都是在跑藍(lán)牙的功能,即 func_bt(),在藍(lán)牙音箱項(xiàng)目中則通常會(huì)在各模式之間切換,那么此時(shí)可以通過修改 func_cb.sta 來(lái)切換當(dāng)前的模式。

以藍(lán)牙功能為例,在 func_run() 中進(jìn)入藍(lán)牙模式,進(jìn)入 func_bt(),func_bt_enter() 函數(shù)中包含進(jìn)入藍(lán)牙功能的相關(guān)初始化,func_bt_process() 中包含電量檢測(cè)、自動(dòng)關(guān)機(jī)或休眠檢測(cè),以及充電狀態(tài)處理,同時(shí)會(huì)在 while() 中循環(huán)跑藍(lán)牙模式下的消息處理函數(shù) func_bt_message(msg_dequeue()),大部分功能操作都是在消息處理函數(shù)中去實(shí)現(xiàn)。

3、消息處理
在 SDK 的二次開發(fā)中,通常修改最多的是消息的處理部分,在工程 message 文件夾下,有不同模式下對(duì)應(yīng) c 文件,例如 bt 模式下,對(duì)應(yīng)的消息處理則是在 msg_bt.c 文件中,不同狀態(tài)下的消息處理函數(shù)也不同。藍(lán)牙音樂下的消息處理在 func_bt_message() 中,來(lái)電響鈴時(shí)的消息處理在 sfunc_bt_ring_message() 中,sfunc_bt_call_message() 則是通話中的消息處理。消息處理函數(shù)中通常處理按鍵,例如按鍵的單擊、雙擊、長(zhǎng)按等操作,或者定時(shí)器中斷消息,從定時(shí)器中斷處理函數(shù)發(fā)送到相應(yīng)的消息處理函數(shù)中。
此外還有一個(gè)消息處理是 func.c 中的 func_message(),任何模式下可以進(jìn)入該消息處理函數(shù),所以在 SDK 中長(zhǎng)按關(guān)機(jī),音量調(diào)節(jié)等不區(qū)分功能模式的操作都會(huì)放在這個(gè)函數(shù)中。
相信通過上面的簡(jiǎn)單介紹,大家對(duì) SDK 有了一點(diǎn)大致的映象,其實(shí)大部分的 UI 功能需求,都可以在消息處理函數(shù)中去實(shí)現(xiàn)。那么以上就是的文本的全部?jī)?nèi)容,如果本文內(nèi)容有不準(zhǔn)確或疏漏的地方,希望大家可以幫忙指正,還有其他問題可以在評(píng)論區(qū)中提出一起討論,后續(xù)會(huì)繼續(xù)更新相關(guān)內(nèi)容,我們下次再見。
延伸閱讀
共同關(guān)鍵字: 中科藍(lán)訊 SDK
中科藍(lán)訊 SDK 開發(fā)環(huán)境安裝及 Downloader 配置
中科藍(lán)訊 SDK 開發(fā)——耳機(jī)充電配置
中科藍(lán)訊 SDK 開發(fā)——SDK按鍵功能簡(jiǎn)析
中科藍(lán)訊 SDK TWS 組隊(duì)和藍(lán)牙配對(duì)過程分析
中科藍(lán)訊 SDK 開發(fā)——TWS 左右聲道分配