天天看點

ANCS應用筆記

這篇應用筆記描述了如何通過WB415的藍牙子產品來ANCS的功能,可以與蘋果裝置連接配接,對蘋果裝置的通知資訊進行實時的監聽與接收。

支援型号:AT32WB415

目錄

1 概述… 5

2 AT32WB415ANCS程式設計… 6

2.1 ANCS服務特征… 6

2.2 BLE子產品軟體設計… 6

2.3 MCU軟體設計… 7

3 ANCS案例使用… 8

3.1 硬體資源… 8

3.2 軟體資源… 8

3.3 ANCS demo使用… 8

1 概述

ANCS(Apple Notification Center Service)即蘋果通知中心服務,此服務為外圍藍牙裝置(手表、耳機等)通路IOS裝置(iPhone、iPad等)上生成的多種通知提供了一種簡單友善的機制。ANCS圍繞三個原則設計:簡單性、高效性和可擴充性,是以,不論是簡單的LED裝置還是具有大顯示屏的功能強大的“配套”裝置等配件來說,這項服務都具有很高的可用性。

ANCS是基于BLE協定中的通用屬性協定(Generic Attribute Profile,GATT)來實作的,即ANCS是GATT協定的一個子集。作為GATT用戶端的藍牙裝置可以在使用ANCS時自由通路和使用IOS裝置提供的其他服務。

通常ANCS傳輸的所有數值的位元組序都應為小端,傳輸的字元串值都應由UTF-8編碼的unicode字元組成。

2 AT32WB415 ANCS程式設計

2.1 ANCS服務特征

ANCS的服務 UUID 為7905F431-B5CE-4E99-A40F-4B1E122D00D0。由于IOS的特性,BLE裝置應查找并訂閱 GATT 服務的Service Changed 特征,以便随時監控 ANCS 潛在的釋出和釋出取消。ANCS提供三個服務特征:

通知源(NotificationSource): UUID 9FBF120D-6301-42D9-8C58-25E699A21DBD(通知)

控制點(ControlPoint): UUID 69D1D8F3-45E1-49A8-9821-9BBDFDAAD9D9(可寫響應)

資料源(Data Source): UUID22EAC6E9-24D6-4BB5-BE44-B36ACE7C7BFB(通知)

所有這些特征都需要授權才能通路,即BLE裝置連接配接上IOS裝置并且完成配對和綁定後才能進行通路。這三個特征中對通知源特征的支援是強制性的,而對控制點特征和資料源特征的支援是可選的。

關于ANCS更多詳細内容請參閱:Apple通知中心服務(ANCS)規範

2.2 BLE子產品軟體設計

對于BLE子產品部分的軟體,主要就是依據上述ANCS規範來設計的,也就是ANCS規範的軟體實作。在使用ANCS服務前需要進行服務設定,流程如下:

  1. 等待IOS裝置連接配接BLE子產品,并完成配對和綁定
               
  2. BLE子產品擷取ANCS服務和特征
               
  3. BLE子產品訂閱資料源(可選項)和通知源,等待ANCS發送通知
               

圖1. 服務設定流程

ANCS應用筆記

下面以來電通知為例講解通知接收流程

  1. IOS裝置發送來電通知,UID = 3
               
  2. BLE子產品擷取通知屬性,UID = 3,需要擷取内容包含Title,Message和AppID
               
  3. IOS裝置将UID = 3的通知資料發送給BLE裝置
               
  4. BLE子產品發送得到的AppID擷取App屬性,需要擷取内容為DisplayName
               
  5. IOS裝置将該AppID的DisplayName發送給BLE裝置
               

圖2. 通知接收流程

ANCS應用筆記

對于本案例,BLE子產品能夠處理的ANCS通知包括來電通知和應用通知兩種,使用者可按照這兩種通知的處理方式來開發其他ANCS通知處理函數。對于不同的通知産生的不同僚件BLE子產品會通過序列槽發送不同的資料标志給MCU端,如下:

l 0x5AA501,表示接收到來電通知添加事件(CategoryID = 1,EventID = 0)

l 0x5AA502,表示接收到來電通知移除事件(CategoryID = 1,EventID = 4)

l 0x5AA503,表示接收到應用通知添加事件(CategoryID = 4,EventID = 0)

l 0x5AA504,表示接收到應用通知移除事件(CategoryID = 4,EventID = 4)

2.3 MCU軟體設計

上面提到BLE端對接收到的資料進行判斷後會通過序列槽發送不同的資料标志給到MCU端, MCU端對接收到的BLE序列槽資料處理方式如下:

  1. 通過序列槽(USART3)接收BLE子產品發送的通知資料
               
  2. 接收到0x5AA501,點亮LED2提示來電通知
               
  3. 接收到0x5AA502,關閉LED2提示來電通知移除
               
  4. 接收到0x5AA503,點亮LED3提示應用通知
               
  5. 接收到0x5AA504,關閉LED3提示應用通知移除
               
  6. 除ANCS通知外,對藍牙連接配接狀态也會進行顯示:
               

接收到0x5AA505,點亮LED4提示藍牙連接配接配對成功

接收到0x5AA506,關閉LED4提示藍牙連接配接斷開

7) 除LED表示通知類型外,還會将接收到的通知資料發送到序列槽(USART2)來模拟通知顯示

3 ANCS案例使用

本案例将展示如何通過AT32WB415對蘋果裝置通知資訊進行實時的監聽與接收。

3.1 硬體資源

  1. 訓示燈LED2/LED4
               
  2. AT-START-WB415實驗闆
               
  3. 一台IOS裝置
               

3.2 軟體資源

  1. ICP Programmer Tool,可在官網下載下傳最新版本
               
  2. BLE子產品源碼
               

n ble_app_ancs,BLE源程式,用于BLE子產品app程式,工程路徑位于:

SourceCode\wb415_ble_ancs_2.0.0\projects\ble_app_ancs

3) MCU端源碼

n wb415_mcu_project,MCU源程式,用于BLE資料處理,工程路徑位于:

SourceCode\wb415_mcu_ancs_2.0.0\utilities\wb415_mcu_project\mdk_v5

注:本案例僅提供Keil v5版本工程,若使用者需要在其他編譯環境上使用,請參考AT32WB415_Firmware_Library_V2.x.x\project\at_start_wb415\templates中各種編譯環境(例如IAR6/7/8,keil 4/5, eclipse_gcc)進行對應修改即可。

3.3 ANCS demo使用

在使用ANCS服務前需要在WB415中燒錄支援ANCS服務的源碼,步驟如下:

  1. 打開BLE端的ble_app_gatt源程式
               
  2. 編譯後會生成一系列bin檔案,位于ble_app_ancs\output\app路徑,其中
               

wb415_ble_ancs_merge.bin,融合了底層藍牙協定棧和上層應用程式

3) 打開ICP工具下載下傳上述路徑中的wb415_ble_ancs_merge.bin至BLE子產品,如下圖

圖3. 點選添加BLE燒錄檔案

ANCS應用筆記

圖4. 修改BLE子產品下載下傳起始位址

ANCS應用筆記
  1. 打開MCU端的wb415_mcu_project源程式
               
  2. 通過Keil v5編譯後直接下載下傳即可
               

BLE子產品和MCU端代碼都下載下傳完成後即可開始進行ANCS服務測試,步驟如下

  1. 打開IOS裝置的藍牙并掃描,點選名稱為WB415-ANCS的裝置進行連接配接
               

圖5. 連接配接WB415-ANCS

ANCS應用筆記
  1. 配對完成後還需要允許WB415-ANCS接收本裝置的通知
               

圖6. 允許WB415-ANCS接收通知

ANCS應用筆記
  1. 連接配接成功後會通過序列槽PA2(USART2_TX)列印資訊“BLE connectedto ANCS”,同時LED4會被點亮
               
  2. 測試來電通知,當收到來電通知時序列槽會列印來電号碼,LED2會被點亮,通知清除(接聽或挂斷)時LED2熄滅
               
  3. 測試應用通知,當接收到應用通知時序列槽會列印應用通知的相關資訊,如應用名稱,消息内容,消息接收時間等,此時LED3會被點亮,通知清除時LED3熄滅。
               

注:若IOS裝置為中文系統,則序列槽列印的應用通知中可能會有亂碼,這是由于包含的通知消息中含有UTF-8編碼格式的中文資訊,将序列槽資料儲存後通過UTF-8編碼讀取即可擷取其中的中文資訊。

圖7. ANCS通知時序列槽列印資料

ANCS應用筆記

至此本案例的WB415 ANCS測試完成。

iOS