HOGP概述
HOGP(HID over GATT)是由Bluetooth SIG維護(hù)的藍(lán)牙配置文件規(guī)范,通過(guò)低功耗藍(lán)牙實(shí)現(xiàn)HID的配置文件并作為與計(jì)算器之間的接口,消除HID中對(duì)電線或物理連接的需求。
HID角色
在HID中,以及在HOGP的延伸中,定義了兩個(gè)角色,這些角色是HID主機(jī)和HID設(shè)備。HID設(shè)備一次只能主動(dòng)連接到單個(gè)HID主機(jī);然而一個(gè)HID主機(jī)可以連接到多個(gè)HID設(shè)備。有關(guān)主機(jī)和設(shè)備如何交互的細(xì)節(jié),請(qǐng)參閱HOGP規(guī)范中的第3章HID設(shè)備需求和第4章HID主機(jī)需求和行為。
一、HID主機(jī)
HID主機(jī)實(shí)現(xiàn)藍(lán)牙GAP中的中心(Central)角色,接收輸入訊息并使用提供的數(shù)據(jù)進(jìn)行更進(jìn)一步的處理。例如,計(jì)算器會(huì)是HID主機(jī),因?yàn)檫@是接收HID數(shù)據(jù)的設(shè)備。HID主機(jī)對(duì)HID功能的正確執(zhí)行有許多責(zé)任與需求,但在此開(kāi)發(fā)指南中所提供的范例僅實(shí)現(xiàn)了HID設(shè)備,因此本文檔不涉及這些內(nèi)容。想要了解HID主機(jī)的職責(zé)和需求,請(qǐng)參閱HOGP規(guī)范中的第2章配置、第4章HID主機(jī)需求和行為、第5章連線建立。
二、HID設(shè)備HID設(shè)備實(shí)現(xiàn)藍(lán)牙GAP中的外設(shè)(Peripheral)角色,負(fù)責(zé)將輸入信息傳輸?shù)街醒胗?jì)算器。例如,鼠標(biāo)或鍵盤會(huì)是HID設(shè)備,因?yàn)樗鼈儗⑤斎霐?shù)據(jù)發(fā)送到計(jì)算器設(shè)備。
Bluetooth Profile
要透過(guò)藍(lán)牙實(shí)現(xiàn)HID功能,那就必須要事先定義好規(guī)范,如此主機(jī)及裝置雙方才能夠順利通信,由于本開(kāi)發(fā)指南是針對(duì)裝置的部份進(jìn)行說(shuō)明,故此處只列出裝置所需的服務(wù)。
表1. HID裝置的必須服務(wù)
這邊要注意到Device Information Service中的PnP特征,如果是開(kāi)發(fā)一個(gè)標(biāo)準(zhǔn)的鍵盤或鼠標(biāo),請(qǐng)根據(jù)已經(jīng)注冊(cè)的Vendor ID及Product ID填入其中。
例 HID裝置實(shí)做
HOGP 工程是一個(gè)在 AT32WB415 上實(shí)現(xiàn) HOGP 規(guī)范的低功耗藍(lán)牙工程,該工程使用 HOGP 規(guī)范指定的藍(lán)牙外設(shè)角色,演示了 HOGP 的鍵盤及鼠標(biāo)。通過(guò)使用通知(Notification)和 GATT 配置文件,該項(xiàng)目能夠通過(guò)低功耗藍(lán)牙 HID 裝置并與 HID 主機(jī)正確連接。HOGP 工程中有幾個(gè)復(fù)雜的部份,在本文檔中進(jìn)行了討論,這些部份組合在一起以實(shí)現(xiàn)整體功能。
報(bào)告映射討論
HOGP工程依賴于報(bào)告映像,報(bào)告映射是HOGP用于實(shí)現(xiàn)低功耗藍(lán)牙HID功能的結(jié)構(gòu)。報(bào)告映像用于告訴主機(jī)許要從HID設(shè)備獲得什么功能和什么樣的數(shù)據(jù),在原始的HID USB規(guī)范中,報(bào)告映射稱為報(bào)告描述符,報(bào)告映射和報(bào)告描述符是相同的,它們之間唯一的區(qū)別是報(bào)告映射用于HOGP,報(bào)告描述符用于HID USB。該工程使用的報(bào)告映像可以在app_hid.c文件中找到,并且包含在gHIDReportDescriptor變量中,此工程中的報(bào)告映像包含鍵盤的輸入信息。該結(jié)構(gòu)分為多個(gè)部份,應(yīng)用程序以及HID主機(jī)能夠通過(guò)使用報(bào)告ID字段找到所需的部份??梢暂p松修改報(bào)告映像以包含不同的輸入或修改已經(jīng)存在的輸入,USB實(shí)現(xiàn)者論壇的設(shè)備工作組有一個(gè)報(bào)告描述符建構(gòu)器工具,可以用于輕松創(chuàng)建報(bào)告映射。下面的程序代碼顯示了報(bào)告映像結(jié)構(gòu)片段,所有字段都有標(biāo)簽,可以輕松修改。例如,如果需要不同數(shù)量的鍵盤按鍵,則可以輕松修改相關(guān)字段。
- HID Report
修改裝置類型
只有當(dāng)開(kāi)發(fā)者正確地填入裝置類型參數(shù),主機(jī)端才能顯示出合適的裝置圖標(biāo),即便在廣播的時(shí)候能夠正確辨識(shí)出裝置的類型,但如果沒(méi)有修改GAP中的Appearance數(shù)值,聯(lián)機(jī)后的裝置圖標(biāo)依然會(huì)顯示異常,以下特別列出在開(kāi)發(fā)時(shí)容易疏忽的地方:1. 廣播時(shí)的Appearance,主機(jī)掃描到時(shí)就會(huì)將裝置類型顯示出來(lái),比如說(shuō)鍵盤或是鼠標(biāo),在代碼中位于user_config.h里面的宏定義APP_HID_ADV_DATA_APPEARANCE, 0x03C2代表鼠標(biāo), 0x03C1代表鍵盤,更詳細(xì)的內(nèi)容可以參考SIG的Spec.圖1. Appearance Part of ADV Data2.?聯(lián)機(jī)建立后,主機(jī)會(huì)來(lái)讀取裝置的GAP, 這個(gè)時(shí)候就會(huì)得到這個(gè)裝置是屬于哪一種類型,如果沒(méi)有正確填寫,在主機(jī)端的驅(qū)動(dòng)安裝完成后,顯示的裝置類型會(huì)與預(yù)期的不同。這個(gè)部份的代碼位于app_task.c中的gapc_get_dev_info_req_ind_handler函式,代碼中已將鍵盤及鼠標(biāo)的Appearance給定義起來(lái),使用者可以依據(jù)需求擴(kuò)充。圖2. GAP Client Gets Device Apperance3.?在新增HID Profile時(shí),填入當(dāng)前的應(yīng)用類型,這位于app_hid.c中的app_hid_add_hids函式,使用者可以根據(jù)當(dāng)前需求填入鍵盤或是鼠標(biāo)的宏定義,但要記得一定要有Protocol Mode才能正常使用。圖3. GAP Client Gets Device Apperance
資源類型
1) 硬件環(huán)境:對(duì)應(yīng)產(chǎn)品型號(hào)的AT-START BOARD2) 軟件環(huán)境wb415_hogp_bt_demo\projects\ble_app_remotewb415_hogp_mcu_demo\utilities\wb415_hogp_mcu_demo\mdk_v5
軟件設(shè)計(jì)
1) 配置流程a) MCU端
- 配置USER KEY作為擊鍵
- 編寫USART3通訊函數(shù)
- 輪詢USER KEY是否按下
- 根據(jù)需求去配置USER KEY按下后發(fā)出的AT command
b) BT端
- 將HOGP的Profile加入database
- 編寫應(yīng)用層與GATT之間的界面
- 在應(yīng)用層中輪詢AT command
- 透過(guò)HOGP將不同的key function發(fā)給host端
2) 代碼介紹a)MCU端
- main函數(shù)代碼描述
b)?BT端
原則上不需要去修改Profile層的內(nèi)容,由APP層去設(shè)定HID裝置的內(nèi)容即可
- 初始化HOGP裝置變量
- 將HOGP加入database
在main函數(shù)之中的while loop不斷輪詢app_user_entry()來(lái)確認(rèn)有無(wú)收到AT command,如果收到有收到AT command則執(zhí)行該命令的內(nèi)容。
- 解析AT command并執(zhí)行對(duì)應(yīng)的程序
實(shí)驗(yàn)效果
- 按下AT-START板上的USER KEY發(fā)送www back按鍵,則瀏覽器頁(yè)面返回上一頁(yè)
- 按下AT-START板上的USER KEY發(fā)送volume up按鍵,則音量提高(需要修改ATcommand)
- 按下AT-START板上的USER KEY發(fā)送volume down按鍵,則音量降低(需要修改AT command)
按鍵定義
本應(yīng)用指南以多媒體按鍵為例,在代碼中定義了多媒體按鍵值的數(shù)組,用戶可以在app_key.c中找到以下代碼:
- 多媒體按鍵值定義
在app.c中的app_user_entry函數(shù),每當(dāng)添加一個(gè)新的按鍵實(shí)例,必須透過(guò)app_hid_send_report這個(gè)函數(shù),將按鍵值及長(zhǎng)度發(fā)送給主機(jī)端,主機(jī)才能根據(jù)按鍵值做出對(duì)應(yīng)的行為;舉例來(lái)說(shuō),要發(fā)出降低音量的按鍵功能,從上面的注釋可以看到volume down對(duì)應(yīng)到第九列,是整個(gè)數(shù)組的第18個(gè)數(shù),因此調(diào)用發(fā)送函數(shù)時(shí)寫成app_hid_send_report(&key_copy[18], 2),其他按鍵也是如此使用。
HOGP相關(guān)AT command
本應(yīng)用指南中,已經(jīng)建立部分的AT command,如下表:表2. HOGP相關(guān)AT command
用戶自行添加AT command時(shí),需要在MCU端及BT端同時(shí)增加對(duì)應(yīng)的實(shí)例;MCU端要在at_cmd.h中新增AT command的請(qǐng)求及期待的響應(yīng);BT端要在app.h中新增要解析的AT command字符串、command的枚舉以及回復(fù)的枚舉,數(shù)量上如果對(duì)不上的話則發(fā)出的按鍵功能可能會(huì)不正常。另外鼠目標(biāo)AT command及位移都是填入Dummy Data, 使用者如果要反應(yīng)真實(shí)的位移及實(shí)作按鍵、滾輪等功能,需要自己由傳感器讀取數(shù)據(jù),并修改鼠標(biāo)的AT command讓它可以攜帶真實(shí)參數(shù),接收AT command的部份也要實(shí)做解析函數(shù)去取出AT command中的參數(shù)內(nèi)容,并填入Notification之中。關(guān)于雅特力雅特力科技于2016年成立,是一家致力于推動(dòng)全球市場(chǎng)32位微控制器(MCU)創(chuàng)新趨勢(shì)的芯片設(shè)計(jì)公司,專注于ARM Cortex-M4/M0+的32位微控制器研發(fā)與創(chuàng)新,全系列采用55nm先進(jìn)工藝及ARM Cortex-M4高效能或M0+低功耗內(nèi)核,締造M4業(yè)界最高主頻288MHz運(yùn)算效能,并支持工業(yè)級(jí)別芯片工作溫度范圍(-40°~105°)。雅特力目前已累積相當(dāng)多元的終端產(chǎn)品成功案例:如微型打印機(jī)、掃地機(jī)、光流無(wú)人機(jī)、熱成像儀、激光雷達(dá)、工業(yè)縫紉機(jī)、伺服驅(qū)控、電競(jìng)周邊市場(chǎng)、斷路器、ADAS、T-BOX、數(shù)字電源、電動(dòng)工具等終端設(shè)備應(yīng)用,廣泛地覆蓋5G、物聯(lián)網(wǎng)、消費(fèi)、商務(wù)及工控等領(lǐng)域。
-
mcu
+關(guān)注
關(guān)注
146文章
16885瀏覽量
349916 -
雅特力
+關(guān)注
關(guān)注
0文章
153瀏覽量
7959 -
AT32
+關(guān)注
關(guān)注
1文章
110瀏覽量
2058
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論