一種基於低功耗藍牙協議的通信方法和裝置與流程
2023-11-09 18:13:18 1

本發明涉及通信的技術領域,特別是涉及一種基於低功耗藍牙協議的通信方法和一種基於低功耗藍牙協議的通信裝置。
背景技術:
隨著通信科技的發展,諸如手機、手環、手錶等智能終端在人們的工作、學習、日常交流等各方面的使用率也越來越高。
隨著可穿戴設備的逐步興起,如手環、手錶等,這些可穿戴設備一般通過藍牙協議與用戶的其他智能終端(如手機)相連接,進行通知消息的同步以及數據的上報。
藍牙協議又分為傳統藍牙協議(又稱經典藍牙,Classic Bluetooth)和低功耗藍牙協議(Bluetooth Low Energy,BLE)兩種。
其中,低功耗藍牙協議以其低耗電水平而廣泛普及,在低功耗藍牙協議下,一側終端如果接收或生成消息,會實時將該消息同步或上報到另一側終端,如果另一側終端處於休眠狀態,頻繁地同步或上報消息會導致另一側終端頻繁地喚醒,導致另一側終端的資源消耗增加。
例如,手錶與手機通過低功耗藍牙協議相連,存在兩種情況:
一種情況是,手機收到通知或來電等消息時,將消息同步到手錶。
另一種情況是,手錶產生的運動數據、位置信息等消息,上傳到手機端。
若手錶處於休眠狀態,手機中的某個應用每隔10秒有一個新通知,則手機就會每隔10秒通過低功耗藍牙協議將新通知同步到手錶中,即每隔10秒喚醒手錶一次。
如果手機處於休眠狀態,手錶每1秒產生一次運動數據、位置信息,則手錶就會每隔1秒通過低功耗藍牙協議將運動數據、位置信息上報到手機,即每隔1秒喚醒手機一次。
技術實現要素:
鑑於上述問題,為了解決上述在低功耗藍牙協議下頻繁喚醒終端的問題,本發明實施例提出了一種基於低功耗藍牙協議的通信方法和相應的一種基於低功耗藍牙協議的通信裝置。
依據本發明的一個方面,提供了一種基於低功耗藍牙協議的通信方法,包括:
第一終端作為中心設備,在接收到消息時,檢測作為外圍設備的第二終端的狀態標識;
第一終端在檢測到所述狀態標識為休眠標識時,識別所述消息的類型;第一終端根據所述類型對應的同步頻率、將所述消息通過低功耗藍牙協議發送至第二終端。
可選地,所述識別所述消息的類型的步驟包括:
確定接收到所述消息的應用;
查詢所述應用對應的分類標籤;
按照所述分類標籤確定所述消息的類型。
可選地,所述類型包括第一類型和第二類型;
所述第一終端根據所述類型對應的同步頻率、將所述消息通過低功耗藍牙協議發送至第二終端的步驟包括:
第一終端在確定所述消息屬於第一類型時,將所述消息緩存一段時間;
第一終端在超過所述時間時,將所述時間段內屬於所述第一類型的消息通過低功耗藍牙協議向發送至第二終端;
第一終端在確定所述消息屬於第二類型時,將屬於所述第二類型的消息通過低功耗藍牙協議發送至第二終端。
可選地,所述第一終端在確定所述消息屬於第一類型時,將所述消息緩存一段時間的步驟包括:
第一終端在確定所述消息屬於第一類型時,將屬於所述第一類型的消息存儲至緩存隊列中;
第一終端啟動定時器,以計時一段時間。
可選地,所述第一終端在超過所述時間時,將所述時間段內屬於所述第一類型的消息通過低功耗藍牙協議向發送至第二終端的步驟包括:
第一終端在所述定時器計時結束時,將所述緩存隊列中屬於所述第一類型的消息通過低功耗藍牙協議發送至第二終端;
第一終端取消所述定時器。
可選地,所述第一終端在確定所述消息屬於第二類型時,通過低功耗藍牙協議將所述消息發送至第二終端的步驟包括:
第一終端在確定所述消息屬於第二類型時,判斷是否緩存有屬於所述第一類型的消息;
若是,則第一終端將屬於所述第一類型的消息、屬於所述第二類型的消息通過低功耗藍牙協議一同發送至第二終端。
可選地,所述第一終端在確定所述消息屬於第二類型時,判斷是否存儲有屬於所述第一類型的消息的步驟包括:
第一終端在確定所述消息屬於第二類型時,判斷是否啟動定時器;
若是,則確定緩存有屬於所述第一類型的消息。
可選地,所述第一終端將屬於所述第一類型的消息、屬於所述第二類型的消息通過低功耗藍牙協議一同發送至第二終端的步驟包括:
第一終端將緩存隊列中屬於所述第一類型的消息、屬於所述第二類型的消息通過低功耗藍牙協議一同發送至作為外圍設備的第二終端;
第一終端取消所述定時器。
可選地,還包括:
第一終端通過低功耗藍牙協議接收第二終端在進入休眠狀態時發送的休眠標識;
第一終端將所述休眠標識記錄為第二終端的狀態標識;
和/或,
第一終端通過低功耗藍牙協議接收第二終端在進入活動狀態時發送的活動標識;
第一終端將所述活動標識記錄為第二終端的狀態標識。
可選地,還包括:
第一終端在所述狀態標識為活動標識時,將所述消息通過低功耗藍牙協議發送至第二終端。
根據本發明的另一方面,提供了一種基於低功耗藍牙協議的通信方法,包括:
第二終端作為外圍設備,在生成消息時,檢測作為中心設備的第一終端的狀態標識;
第二終端在檢測到所述狀態標識為休眠標識時,將所述消息緩存一段時間;
第二終端在超過所述時間時,將所述消息通過低功耗藍牙協議發送至第一終端。
可選地,所述將所述消息緩存一段時間的步驟包括:
將所述消息存儲至緩存隊列中;
啟動定時器,以計時一段時間。
可選地,所述第二終端在超過所述時間時,將所述消息通過低功耗藍牙協議發送至第一終端的步驟包括:
第二終端在所述定時器計時結束時,將所述緩存隊列中的消息通過低功耗藍牙協議發送至作為中心設備的第一終端;
第二終端取消所述定時器。
可選地,還包括:
第二終端通過低功耗藍牙協議接收第一終端在進入休眠狀態時發送的休眠標識;
第二終端將所述休眠標識記錄為第一終端的狀態標識;
和/或,
第二終端通過低功耗藍牙協議接收第一終端在進入活動狀態時發送的活動標識;
第二終端將所述活動標識記錄為第一終端的狀態標識。
可選地,還包括:
第二終端在所述狀態標識為活動標識時,將所述消息通過低功耗藍牙協議發送至第一終端。
根據本發明的另一方面,提供了一種基於低功耗藍牙協議的通信裝置,應用在第一終端中,所述裝置包括:
外圍狀態檢測模塊,用於作為中心設備,在接收到消息時,檢測作為外圍設備的第二終端的狀態標識;
消息類型識別模塊,用於在檢測到所述狀態標識為休眠標識時,識別所述消息的類型;
外圍消息休眠同步模塊,用於根據所述類型對應的同步頻率、將所述消息通過低功耗藍牙協議發送至第二終端。
可選地,所述消息類型識別模塊包括:
應用確定子模塊,用於確定接收到所述消息的應用;
分類標籤查詢子模塊,用於查詢所述應用對應的分類標籤;
消息類型確定子模塊,用於按照所述分類標籤確定所述消息的類型。
可選地,所述類型包括第一類型和第二類型;所述外圍消息休眠同步模塊包括:
中心緩存子模塊,用於在確定所述消息屬於第一類型時,將所述消息緩存一段時間;
中心間隔發送子模塊,用於在超過所述時間時,將所述時間段內屬於所述第一類型的消息通過低功耗藍牙協議向發送至第二終端;
中心實時發送子模塊,用於在確定所述消息屬於第二類型時,將屬於所述第二類型的消息通過低功耗藍牙協議發送至第二終端。
可選地,所述中心緩存子模塊包括:
中心緩存隊列存儲單元,用於第一終端在確定所述消息屬於第一類型時,將屬於所述第一類型的消息存儲至緩存隊列中;
中心定時器啟動單元,用於啟動定時器,以計時一段時間。
可選地,所述中心間隔發送子模塊包括:
中心計時發送單元,用於在所述定時器計時結束時,將所述緩存隊列中屬於所述第一類型的消息通過低功耗藍牙協議發送至第二終端;
第一中心定時器取消單元,用於取消所述定時器。
可選地,所述中心實時發送子模塊包括:
緩存消息判斷單元,用於在確定所述消息屬於第二類型時,判斷是否緩存有屬於所述第一類型的消息;若是,則調用中心協同發送單元;
中心協同發送單元,用於將屬於所述第一類型的消息、屬於所述第二類型的消息通過低功耗藍牙協議一同發送至第二終端。
可選地,所述緩存消息判斷單元包括:
啟動器啟動判斷子單元,用於第一終端在確定所述消息屬於第二類型時,判斷是否啟動定時器;若是,則調用消息緩存確定子單元;
消息緩存確定子單元,用於確定緩存有屬於所述第一類型的消息。
可選地,所述中心協同發送單元包括:
中心雙類型發送子單元,用於將緩存隊列中屬於所述第一類型的消息、屬於所述第二類型的消息通過低功耗藍牙協議一同發送至第二終端;
第二中心定時器取消子單元,用於取消所述定時器。
可選地,還包括:
外圍休眠標識接收模塊,用於通過低功耗藍牙協議接收第二終端在進入休眠狀態時發送的休眠標識;
外圍休眠狀態記錄模塊,用於將所述休眠標識記錄為第二終端的狀態標識;
和/或,
外圍活動標識接收模塊,用於通過低功耗藍牙協議接收第二終端在進入活動狀態時發送的活動標識;
外圍活動狀態記錄模塊,用於將所述活動標識記錄為第二終端的狀態標識。
可選地,還包括:
外圍消息活動同步模塊,用於在所述狀態標識為活動標識時,將所述消息通過低功耗藍牙協議發送至第二終端。
根據本發明的另一方面,提供了一種基於低功耗藍牙協議的通信裝置,應用在第二終端中,所述裝置包括:
中心狀態檢測模塊,用於作為外圍設備,在生成消息時,檢測作為中心設備的第一終端的狀態標識;
外圍緩存模塊,用於在檢測到所述狀態標識為休眠標識時,將所述消息緩存一段時間;
中心消息休眠上報模塊,用於在超過所述時間時,將所述消息通過低功耗藍牙協議發送至第一終端。
可選地,所述外圍緩存模塊包括:
外圍緩存隊列存儲子模塊,用於在所述狀態標識為休眠標識時,將所述消息存儲至緩存隊列中;
外圍定時器啟動子模塊,用於啟動定時器,以計時一段時間。
可選地,所述中心消息休眠上報模塊包括:
外圍計時發送子模塊,用於在所述定時器計時結束時,將所述緩存隊列中的消息通過低功耗藍牙協議發送至第一終端;
外圍定時器取消子模塊,用於取消所述定時器。
可選地,還包括:
中心休眠標識接收模塊,用於通過低功耗藍牙協議接收第一終端在進入休眠狀態時發送的休眠標識;
中心休眠狀態記錄模塊,用於將所述休眠標識記錄為第一終端的狀態標識;
和/或,
中心活動標識接收模塊,用於通過低功耗藍牙協議接收第一終端在進入活動狀態時發送的活動標識;
中心活動狀態記錄模塊,用於將所述活動標識記錄為第一終端的狀態標識。
可選地,還包括:
中心消息活動上報模塊,用於在所述狀態標識為活動標識時,將所述消息通過低功耗藍牙協議發送至第一終端。
本發明實施例包括以下優點:
本發明實施例應用低功耗藍牙協議的通信,第一終端為中心設備、第二終端為外圍設備,第一終端在接收到消息時,檢測第二終端的狀態標識,如果第二終端的狀態標識為休眠標識時,則第一終端識別消息的類型,根據該類型對應的同步頻率、將該消息通過低功耗藍牙協議發送至第二終端,基於消息的類型靈活設置同步頻率,避免了每次接收到消息就立即與處於休眠狀態的第二終端進行同步,減少了同步的頻次,從而減少了喚醒第二終端的頻次,降低了第二終端的資源消耗。
本發明實施例應用低功耗藍牙協議的通信,第一終端為中心設備、第二終端為外圍設備,第二終端在生成消息時,檢測第一終端的狀態標識,如果第一終端的狀態標識為休眠標識,則第二終端將消息緩存一段時間,在超過該時間時,將該消息通過低功耗藍牙協議發送至第一終端,通過緩存消息,避免了每次生成消息就立即上報至處於休眠狀態的第一終端,減少了同步的頻次,從而減少了喚醒第一終端的頻次,降低了第一終端的資源消耗。
附圖說明
圖1是本發明的一種基於低功耗藍牙協議的通信方法實施例的步驟流程圖;
圖2是本發明的另一種基於低功耗藍牙協議的通信方法實施例的步驟流程圖;
圖3是本發明的另一種基於低功耗藍牙協議的通信方法實施例的步驟流程圖;
圖4是本發明的另一種基於低功耗藍牙協議的通信方法實施例的步驟流程圖;
圖5是本發明的一種基於低功耗藍牙協議的通信裝置實施例的結構框圖;
圖6是本發明的另一種基於低功耗藍牙協議的通信裝置實施例的結構框圖。
具體實施方式
為使本發明的上述目的、特徵和優點能夠更加明顯易懂,下面結合附圖和具體實施方式對本發明作進一步詳細的說明。
在實際應用中,智能設備廣泛應用藍牙4.0標準,藍牙4.0標準包含兩個藍牙標準,準確的說,是一個雙模的標準,它包含傳統藍牙部分(也有稱之為經典藍牙)和低功耗藍牙部分BLE。
這兩個部分適用於不同的應用或者應用條件,傳統藍牙是在之前的1.0.1.2,2.0+EDR,2.1+EDR,3.0+EDR等基礎上發展和完善起來的,低功耗藍牙是在Wibree標準上發展起來的。
傳統藍牙可以用於數據量比較大的傳輸,如語音,音樂,較高數據量傳輸等。
低功耗藍牙可以應用於實時性要求比較高,但是數據速率比較低的產品,如遙控類的滑鼠、鍵盤、遙控滑鼠(Air Mouse),傳感設備的數據發送的心跳帶、血壓計、溫度傳感器等。
在BLE中,支持的角色有:
廣播者(BroadCaster)——廣告發送者,不是可連接的設備
觀察者(Observer)——掃描廣告,不能夠啟動連接
外圍設備(Peripheral)——廣告發送者,是可連接的設備,在單一鏈路層連接時作為一個從機
中心設備(Center)——掃描廣告啟動連接,在單一或者多鏈路層連接時作為主機,支持三個同時連接
廣播者(BroadCaster)跟觀察者Observer)配對使用不能建立連接。一個應用的示例為,溫度傳感器與溫度顯示器。
中心設備(Center)跟外圍設備(Peripheral)可以進行連接,發起配對(Pairing),連結建立成功後,雙發即可進行數據通信。一個應用的示例為,手錶與手機、手環與手機。
BLE連接的過程如下:
1、外圍設備(Peripheral)發送一個廣告讓任何中心設備(Center)知道外圍設備(Peripheral)是一個可連接的設備。
廣告的內容可以包含設備地址,還可以包含一些額外的額數據,比如設備名稱、服務ID等。
2、中心設備(Center)接收到廣告後,發送一個搜索請求給外圍設備(Peripheral),外圍設備(Peripheral)返回掃描響應給中央設備(Center),這樣中央設備(Center)就知道這是一個可連接的設備。
3、中央設備(Center)可以發送一個建立連接的請求給外圍設備(Peripheral)。進行配對連接,必要時進行綁定操作(連接可以被從機或者主機任一方終止)。
配對(Pairing):建立連接,配對完成後可以進行數據通信。
綁定(Banding):將配對信息記錄下來,如設備地址,這樣下次連接時就不需要再次配對的過程(快速連接)。
BLE用3個信道做廣播信道,允許毫秒級快速建立連接,效率遠高於傳統藍牙的32個信道方式。
傳統藍牙有79個數據信道,頻道間隔是1MHz,而BLE有40個數據信道,頻道間隔是2MHz。
傳統藍牙的工作峰值電流一般是35mA,睡眠狀態電流是0.01mA,而BLE的工作峰值電流是小於15mA,睡眠狀態電流是0.004mA。
在介紹BLE的通信方式之前,先介紹BLE中的技術規範:
1、Profile
Profile可以理解為一種規範,一個標準的通信協議,Profile存在於外圍設備(Peripheral)中,藍牙組織規定了一系列的標準Profile,例如,HID OVERGATT、防丟器、心率計等,每個Profile中會包含多個Service,每個Service代表外圍設備(Peripheral)的一種能力。
2、Service
Service可以理解為一個服務,在外圍設備(Peripheral)中,通常有多個Service,例如,電量信息服務、系統信息服務等,每個Service裡面又包含多個Characteristic特徵值。每個Characteristic特徵值,是BLE通信的主體,比如,當前的電量是80%,通過將電量的Characteristic特徵值存儲在外圍設備(Peripheral)的Profile裡,這樣中心設備(Center)就可以通過這個Characteristic特徵值來讀取80%這個數據。
3、Characteristic
Characteristic特徵值可以理解為一個標籤,通過這個標籤可以獲取或者寫入想要的內容,中心設備(Center)與外圍設備(Peripheral)的通信通過Characteristic特徵值來實現。
4、UUID
UUID是統一識別碼,Service和Characteristic都需要一個唯一的UUID來標識。
在BLE協議棧中定義了GAP(Generic Access Profile)和GATT(Generic Attribute)兩個基本配置文件。
協議棧中的GAP層負責設備訪問模式和進程,包括設備發現,建立連接,終止連接,初始化安全特徵和設備配置。
協議棧中的GATT層用於已連接的設備之間的數據通信。
在BLE協議棧中的數據通信分為兩個方面,一個是GATT的client(客戶端,從伺服器讀/寫數據的設備)主動向server(伺服器,包含客戶端需要讀/寫的數據的設備)發送數據,另外一個是GATT的server主動向client發送數據。
中心設備(Center)與外圍設備(Peripheral)之間的通信:
1、中心設備(Center)向外圍設備(Peripheral)發送數據:
中心設備(Center)可以調用GATT_WwrtiCharValue函數向外圍設備(Peripheral)發送數據,這種情況下中心設備(Center)扮演client的角色。
該GATT_WwrtiCharValue函數會調用協議棧裡面與硬體相關的函數最終將數據通過天線發送出去,這裡面涉及對射頻模塊的操作,例如,打開發射機,調整發射機的發送功率等內容,這些操作已經在協議棧中實現了。
在GATT_WwrtiCharValue函數中,需要發送的數據填充到value中,數據長度填充到len中。
2、外圍設備(Peripheral)接收中心設備(Center)發送的數據:
外圍設備(Peripheral)接收中心設備(Center)發送的數據,這種情況下外圍設備(Peripheral)扮演server的角色。
外圍設備(Peripheral)會產生一個GATT Profile Callback調用,這個Callback是外圍設備(Peripheral)初始化時像Profile註冊的,在這個Callback中接收中心設備(Center)發送的數據。
3、外圍設備(Peripheral)向中心設備(Center)發送數據:
外圍設備(Peripheral)可以調用GATT_Notification函數向中心設備(Center)發送數據,這種情況下外圍設備(Peripheral)扮演server的角色。
在GATT_Notification函數中,需要發送的數據填充到value中,數據長度填充到len中。
4、中心設備(Center)接收外圍設備(Peripheral)發送的數據:
中心設備(Center)接收外圍設備(Peripheral)發送的數據,這種情況下中心設備(Center)扮演client的角色。
中心設備(Center)通過GATT_MSG_EVENT事件觸發任讀取gattMsgEvent_t結構體中的msg對應的Indication and Notification messages實現數據接收。
參照圖1,示出了本發明的一種基於低功耗藍牙協議的通信方法實施例的步驟流程圖,具體可以包括如下步驟:
步驟101,第一終端作為中心設備,在接收到消息時,檢測作為外圍設備的第二終端的狀態標識。
在本發明實施例中,第一終端(如手機、平板電腦等)與第二終端(如手環、手錶等)可以通過BLE連接。
在BLE中,第一終端為中心設備(Center),第二終端為外圍設備(Peripheral)。
在第一終端與第二終端中安裝有同一應用,如即時通訊工具、簡訊應用、電話應用、郵箱客戶端等,該應用可能因為終端不同導致版本不同,但是,該應用可以在第一終端和第二終端中登錄同一帳號,如即時通訊帳號、電話號碼、郵箱帳號等。
第一終端中的應用為主要的應用,一般與外部伺服器直接交互,接收相應的消息,如即時通訊消息、來電、簡訊、電子郵件,等等,而第二終端中的應用為從屬的應用,一般不與外部伺服器直接交互,因此,若用戶啟用第二終端,則可以將第一終端中接收到的消息,同步至第二終端。
在實際應用中,可以在第一終端中啟動一個後臺服務service,當第一終端中的應用接收到應用通知、來電、簡訊等消息時,該應用會通過廣播的形式告知系統其他應用,該後臺服務service可以接收此廣播,獲知接收到的消息。
若第一終端在接收到新的消息,則可以檢測第二終端的狀態標識,即標識第二終端所處狀態的信息,獲知第二終端當前所處的狀態。
步驟102,第一終端在檢測到所述狀態標識為休眠標識時,識別所述消息的類型。
休眠標識,指標識第二終端處於休眠狀態的信息,如「sleep」。
如果第一終端查詢到第二終端的狀態標識為休眠標識,表示第二終端處於休眠狀態,為避免頻繁地喚醒第二終端,則可以依據接收到的消息的類型進行相應的同步處理。
在本發明的一個實施例中,步驟102可以包括如下子步驟:
子步驟S11,確定接收到所述消息的應用;
子步驟S12,查詢所述應用對應的分類標籤;
子步驟S13,按照所述分類標籤確定所述消息的類型。
在具體實現中,某個應用的消息所屬的類型,可以是系統設定的,也可以是用戶設置的,本發明實施例對此不加以限制。
在本發明實施例中,可以對應用(可以以包名package name標識)進行分類標記,記錄其分類標籤,如果截取到某個應用的消息,則可以查詢該應用的分類標籤,對該消息進行相應的同步處理。
步驟103,第一終端根據所述類型對應的同步頻率、將所述消息通過低功耗藍牙協議發送至第二終端。
在具體實現中,第一終端可以依據消息不同的類型,查詢不同的同步頻率,作為中心設備(Center)通過BLE的相關規範,將該消息發送至作為外圍設備(Peripheral)的第二終端。
第二終端可以依據消息不同的類型,對消息進行相應的展示。
在本發明的一個實施例中,類型包括第一類型和第二類型。
其中,第一類型為消息實時性要求較低的類型,如電子郵件等,同步頻率較低,如一段時間同步一次,第二終端可以將該消息作為類似簡訊方式提示,用戶可以選擇看或不看;第二類型為消息實時性要求較高的類型,如來電、簡訊等,同步頻率較高,如實時同步,第二終端可以將該消息跳至前臺,用戶通常先處理此消息,然後進行其他操作。
則在本發明實施例中,步驟103可以包括如下子步驟:
子步驟S21,第一終端在確定所述消息屬於第一類型時,將所述消息緩存一段時間;
如果第一終端接收到的消息屬於實時性要求較低的第一類型,為了避免頻繁地喚醒第二終端,則可以間隔一段時間與第二終端進行一次同步。
需要說明的是,該一段時間為從第一條消息開始緩存到同步之間的時間,對這段時間內接收到的消息進行緩存,再將全部的消息一次性進行同步,並非每條消息都需要緩存這段時間。
例如,第一終端間隔10分鐘同步一次第一類型的消息,假設在12:00接收到第一條消息,則開始計時,在12:00-12:10這段時間共接收到20條消息並進行了緩存,則在12:10將這20條消息同步至第二終端。
在具體實現中,第一終端在確定消息屬於第一類型時,將屬於第一類型的消息存儲至緩存隊列中。
此外,第一終端啟動定時器,以計時一段時間。
即第一終端接收到第一類型的消息後,除了將該第一類型的消息存儲至緩存隊列之外,還可以檢測是否啟動定時器,如果沒有啟動,則啟動定時器。
子步驟S22,第一終端在超過所述時間時,將所述時間段內屬於所述第一類型的消息通過低功耗藍牙協議向發送至第二終端;
在具體實現中,第一終端在定時器計時結束時,作為中心設備(Center),通過低功耗藍牙協議將緩存隊列中屬於第一類型的消息發送至作為外圍設備(Peripheral)的第二終端。
此外,第一終端取消定時器,以便於下一次進行計時。
子步驟S23,第一終端在確定所述消息屬於第二類型時,將屬於所述第二類型的消息通過低功耗藍牙協議發送至第二終端。
如果第一終端接收到的消息屬於實時性要求較高的第二類型,為了及時提醒用戶,則可以直接與第二終端進行一次同步。
在本發明的一個實施例中,子步驟S23進一步可以包括如下子步驟:
子步驟S231,第一終端在確定所述消息屬於第二類型時,判斷是否緩存有屬於所述第一類型的消息;若是,則執行子步驟S232;
在具體實現中,第一終端在確定消息屬於第二類型時,判斷是否啟動定時器;若是,則確定緩存有屬於第一類型的消息。
由於定時器用於對緩存的時間進行計時,因此,如果定時器啟動,則表示緩存有屬於第一類型的消息。
子步驟S232,第一終端將屬於所述第一類型的消息、屬於所述第二類型的消息通過低功耗藍牙協議一同發送至第二終端。
在實際應用中,第一終端作為中心設備(Center)、通過低功耗藍牙協議將緩存隊列中屬於第一類型的消息、屬於第二類型的消息一同發送至作為外圍設備(Peripheral)的第二終端。
此外,第一終端取消定時器,以便於下一次進行計時。
在本發明實施例中,為了減少喚醒第二終端的頻次,第一終端在同步第二類型的消息時,可以檢測是否緩存有第一類型的消息。
如果有,則將這兩種類型的消息一次性進行同步,避免在同步第二類型的消息之後,再次同步第一類型的消息。
如果沒有,則直接同步第二類型的消息。
當然,上述消息的類型只是作為示例,在實施本發明實施例時,可以根據實際情況設置其他消息的類型,如第三類型,該第三類型的消息禁止同步至第二終端,等等,本發明實施例對此不加以限制。另外,除了上述消息的類型外,本領域技術人員還可以根據實際需要採用其它消息的類型,本發明實施例對此也不加以限制。
本發明實施例應用低功耗藍牙協議的通信,第一終端為中心設備、第二終端為外圍設備,第一終端在接收到消息時,檢測第二終端的狀態標識,如果第二終端的狀態標識為休眠標識時,則第一終端識別消息的類型,根據該類型對應的同步頻率、將該消息通過低功耗藍牙協議發送至第二終端,基於消息的類型靈活設置同步頻率,避免了每次接收到消息就立即與處於休眠狀態的第二終端進行同步,減少了同步的頻次,從而減少了喚醒第二終端的頻次,降低了第二終端的資源消耗。
參照圖2,示出了本發明的另一種基於低功耗藍牙協議的通信方法實施例的步驟流程圖,具體可以包括如下步驟:
步驟201,第一終端通過低功耗藍牙協議接收第二終端在進入休眠狀態時發送的休眠標識。
步驟202,第一終端將所述休眠標識記錄為第二終端的狀態標識。
在本發明實施例中,如果第二終端即將進入休眠狀態,則可以作為外圍設備(Peripheral),通過BLE的規範將休眠標識(如「sleep」)發送至作為中心設備(Center)的第一終端。
第一終端作為中心設備(Center),通過BLE的規範接收到作為外圍設備(Peripheral)的第二終端發送的休眠標識(如「sleep」),則可以存儲該休眠標識(如「sleep」)作為第二終端當前的狀態標識。
需要說明的是,休眠狀態一般是指將運行的實時數據存儲到內存(媒介)上,並且儘可能關閉不必要的硬體以求省電,對於不同類型、不同系統的終端,該休眠狀態具有不同的含義,本發明實施例對此不加以限制。
例如,在Linux系統中,休眠(suspend)主要分三個主要的步驟:
1、凍結用戶態進程和內核態任務
2、調用註冊的設備的suspend的回調函數,順序是按照註冊順序
3、休眠核心設備和使CPU(Central Processing Unit,中央處理器)進入休眠態,凍結進程,即內核把進程列表中所有的進程的狀態都設置為停止,並且保存下所有進程的上下文。
步驟203,第一終端通過低功耗藍牙協議接收第二終端在進入活動狀態時發送的活動標識。
步驟204,第一終端將所述活動標識記錄為第二終端的狀態標識。
在本發明實施例中,如果第二終端在休眠狀態中被中斷或喚醒,則進入活動狀態。
此時,第二終端可以作為外圍設備(Peripheral),通過BLE的規範將活動標識(指標識第二終端處於正常狀態的信息,如「active」)發送至作為中心設備(Center)的第一終端。
第一終端作為中心設備(Center),通過BLE的規範接收到作為外圍設備(Peripheral)發送的活動標識(如「active」),則可以存儲該休眠標識(如「sleep」)作為第二終端當前的狀態標識。
需要說明的是,活動狀態一般是指將終端正常運行的狀態,對於不同類型、不同系統的終端,該活動狀態具有不同的含義,本發明實施例對此不加以限制。
例如,在Linux系統中,如果系統在休眠(suspend)中被中斷或者其他事件喚醒,這個喚醒的順序是和休眠的循序一般是相反的,所以系統設備和總線會首先喚醒,使能系統中斷,使能休眠時候停止掉的非啟動CPU,以及調用suspend_ops的finish函數,而且在suspend_devices_and_enter函數中也會繼續喚醒每個終端,使能虛擬終端,最後調用suspend_ops的end函數。
在返回到enter_state函數中的,當suspend_devices_and_enter函數返回以後,外設已經喚醒了,但是進程和任務都還是凍結狀態,這裡會調用suspend_finish來解凍這些進程和任務,而且發出Notify來表示系統已經從suspend狀態退出,喚醒終端,系統繼續運行。
步驟205,第一終端作為中心設備,在接收到消息時,檢測作為外圍設備的第二終端的狀態標識。
步驟206,第一終端在檢測到所述狀態標識為休眠標識時,識別所述消息的類型。
步驟207,第一終端根據所述類型對應的同步頻率、將所述消息通過低功耗藍牙協議發送至第二終端。
步驟208,第一終端在所述狀態標識為活動標識時,將所述消息通過低功耗藍牙協議發送至第二終端。
如果第一終端查詢到第二終端的狀態標識為活動標識,表示第二終端處於活動狀態,正常運行,則第一終端可以作為中心設備(Center),通過BLE的相關規範,直接將該消息發送至作為外圍設備(Peripheral)的第二終端。
參照圖3,示出了本發明的另一種基於低功耗藍牙協議的通信方法實施例的步驟流程圖,具體可以包括如下步驟:
步驟301,第二終端作為外圍設備,在生成消息時,檢測作為中心設備的第一終端的狀態標識。
在本發明實施例中,第一終端(如手機、平板電腦等)與第二終端(如手環、手錶等)可以通過BLE連接。
在BLE中,第一終端為中心設備(Center),第二終端為外圍設備(Peripheral)。
在第二終端中配置有傳感器,如溫度傳感器、GPS(Global Positioning System,全球定位系統)模塊、加速度傳感器等,用戶在攜帶第二終端進行運動的過程中,通常會產生傳感器數據,這些傳感器數據一般需要上報至第一終端進行後續的處理,如測量步數、測量跑步距離、測量消耗的卡路裡、統計睡覺時間等等。
若第二終端在生成新的消息,則可以檢測第一終端的狀態標識,即標識第一終端所處狀態的信息,獲知第一終端當前所處的狀態。
步驟302,第二終端在檢測到所述狀態標識為休眠標識時,將所述消息緩存一段時間。
休眠標識,指標識第一終端處於休眠狀態的信息,如「sleep」。
如果第二終端查詢到第一終端的狀態標識為休眠標識,表示第一終端處於休眠狀態,由於第二終端生成的消息實時性要求一般較低,為避免頻繁地喚醒第一終端,則可以間隔一段時間上報一次第一終端。
需要說明的是,該一段時間為從第一條消息開始緩存到同步之間的時間,對這段時間內接收到的消息進行緩存,再將全部的消息一次性進行同步,並非每條消息都需要緩存這段時間。
例如,第二終端間隔10分鐘上報一次生成的消息,假設在12:00生成第一條傳感器的數據,則開始計時,在12:00-12:10這段時間共生成到20條傳感器的數據並進行了緩存,則在12:10將這20條傳感器的數據上報至第一終端。
在具體實現中,第二終端在檢測到狀態標識為休眠標識時,將消息存儲至緩存隊列中。
此外,第二終端啟動定時器,以計時一段時間。
即第二終端在狀態標識為休眠標識後,除了將生成的消息存儲至緩存隊列之外,還可以檢測是否啟動定時器,如果沒有啟動,則啟動定時器。
步驟303,第二終端在超過所述時間時,將所述消息通過低功耗藍牙協議發送至第一終端。
如果超過緩存的時間,第二終端可以作為外圍設備(Peripheral)通過BLE的相關規範,將該消息發送至作為中心設備(Center)的第一終端。
在具體實現中,第二終端在定時器計時結束時,作為外圍設備(Peripheral),將緩存隊列中的消息發送通過低功耗藍牙協議至作為中心設備(Center)的第一終端。
此外,第二終端取消定時器,以便於下一次進行計時。
本發明實施例應用低功耗藍牙協議的通信,第一終端為中心設備、第二終端為外圍設備,第二終端在生成消息時,檢測第一終端的狀態標識,如果第一終端的狀態標識為休眠標識,則第二終端將消息緩存一段時間,在超過該時間時,將該消息通過低功耗藍牙協議發送至第一終端,通過緩存消息,避免了每次生成消息就立即上報至處於休眠狀態的第一終端,減少了同步的頻次,從而減少了喚醒第一終端的頻次,降低了第一終端的資源消耗。
參照圖4,示出了本發明的另一種基於低功耗藍牙協議的通信方法實施例的步驟流程圖,具體可以包括如下步驟:
步驟401,第二終端通過低功耗藍牙協議接收第一終端在進入休眠狀態時發送的休眠標識。
步驟402,第二終端將所述休眠標識記錄為第一終端的狀態標識。
在本發明實施例中,如果第一終端即將進入休眠狀態,則可以作為中心設備(Center),通過BLE的規範將休眠標識(如「sleep」)發送至作為外圍設備(Peripheral)的第二終端。
第二終端作為外圍設備(Peripheral),通過BLE的規範接收到作為中心設備(Center)的第一終端發送的休眠標識(如「sleep」),則可以存儲該休眠標識(如「sleep」)作為第一終端當前的狀態標識。
需要說明的是,休眠狀態一般是指將運行的實時數據存儲到內存(媒介)上,並且儘可能關閉不必要的硬體以求省電,對於不同類型、不同系統的終端,該休眠狀態具有不同的含義,本發明實施例對此不加以限制。
例如,在Linux系統中,休眠(suspend)主要分三個主要的步驟:
1、凍結用戶態進程和內核態任務
2、調用註冊的設備的suspend的回調函數,順序是按照註冊順序
3、休眠核心設備和使CPU(Central Processing Unit,中央處理器)進入休眠態,凍結進程,即內核把進程列表中所有的進程的狀態都設置為停止,並且保存下所有進程的上下文。
步驟403,第二終端通過低功耗藍牙協議接收第一終端在進入活動狀態時發送的活動標識。
步驟404,第二終端將所述活動標識記錄為第一終端的狀態標識。
在本發明實施例中,如果第一終端在休眠狀態中被中斷或喚醒,則進入活動狀態。
此時,第一終端可以作為中心設備(Center),通過BLE的規範將活動標識(指標識第一終端處於正常狀態的信息,如「active」)發送至作為外圍設備(Peripheral)的第二終端。
第二終端作為外圍設備(Peripheral),通過BLE的規範接收到作為中心設備(Center)發送的活動標識(如「active」),則可以存儲該休眠標識(如「sleep」)作為第一終端當前的狀態標識。
需要說明的是,活動狀態一般是指將終端正常運行的狀態,對於不同類型、不同系統的終端,該活動狀態具有不同的含義,本發明實施例對此不加以限制。
例如,在Linux系統中,如果系統在休眠(suspend)中被中斷或者其他事件喚醒,這個喚醒的順序是和休眠的循序一般是相反的,所以系統設備和總線會首先喚醒,使能系統中斷,使能休眠時候停止掉的非啟動CPU,以及調用suspend_ops的finish函數,而且在suspend_devices_and_enter函數中也會繼續喚醒每個終端,使能虛擬終端,最後調用suspend_ops的end函數。
在返回到enter_state函數中的,當suspend_devices_and_enter函數返回以後,外設已經喚醒了,但是進程和任務都還是凍結狀態,這裡會調用suspend_finish來解凍這些進程和任務,而且發出Notify來表示系統已經從suspend狀態退出,喚醒終端,系統繼續運行。
步驟405,第二終端作為外圍設備,在生成消息時,檢測作為中心設備的第一終端的狀態標識。
步驟406,第二終端在檢測到所述狀態標識為休眠標識時,將所述消息緩存一段時間。
步驟407,第二終端在超過所述時間時,將所述消息通過低功耗藍牙協議發送至第一終端。
步驟408,第二終端在所述狀態標識為活動標識時,將所述消息通過低功耗藍牙協議發送至第一終端。
如果第二終端查詢到第一終端的狀態標識為活動標識,表示第一終端處於活動狀態,正常運行,則第二終端可以作為外圍設備(Peripheral),通過BLE的相關規範,直接將該消息發送至作為中心設備(Center)的第一終端。
需要說明的是,對於方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領域技術人員應該知悉,本發明實施例並不受所描述的動作順序的限制,因為依據本發明實施例,某些步驟可以採用其他順序或者同時進行。其次,本領域技術人員也應該知悉,說明書中所描述的實施例均屬於優選實施例,所涉及的動作並不一定是本發明實施例所必須的。
參照圖5,示出了本發明的一種基於低功耗藍牙協議的通信裝置實施例的結構框圖,應用在第一終端500中,該裝置具體可以包括如下模塊:
外圍狀態檢測模塊501,用於作為中心設備,在接收到消息時,檢測作為外圍設備的第二終端的狀態標識;
消息類型識別模塊502,用於在檢測到所述狀態標識為休眠標識時,識別所述消息的類型;
外圍消息休眠同步模塊503,用於根據所述類型對應的同步頻率、將所述消息通過低功耗藍牙協議發送至第二終端。
在本發明的一個實施例中,所述消息類型識別模塊502可以包括如下子模塊:
應用確定子模塊,用於確定接收到所述消息的應用;
分類標籤查詢子模塊,用於查詢所述應用對應的分類標籤;
消息類型確定子模塊,用於按照所述分類標籤確定所述消息的類型。
在本發明的一個實施例中,所述類型包括第一類型和第二類型;
所述外圍消息休眠同步模塊503可以包括如下子模塊:
中心緩存子模塊,用於在確定所述消息屬於第一類型時,將所述消息緩存一段時間;
中心間隔發送子模塊,用於在超過所述時間時,將所述時間段內屬於所述第一類型的消息通過低功耗藍牙協議向發送至第二終端;
中心實時發送子模塊,用於在確定所述消息屬於第二類型時,將屬於所述第二類型的消息通過低功耗藍牙協議發送至第二終端。
在本發明的一個實施例中,所述中心緩存子模塊可以包括如下單元:
中心緩存隊列存儲單元,用於第一終端在確定所述消息屬於第一類型時,將屬於所述第一類型的消息存儲至緩存隊列中;
中心定時器啟動單元,用於啟動定時器,以計時一段時間;
所述中心間隔發送子模塊可以包括如下模塊:
中心計時發送單元,用於在所述定時器計時結束時,將所述緩存隊列中屬於所述第一類型的消息通過低功耗藍牙協議發送至第二終端;
第一中心定時器取消單元,用於取消所述定時器。
在本發明的一個實施例中,所述中心實時發送子模塊可以包括如下單元:
緩存消息判斷單元,用於在確定所述消息屬於第二類型時,判斷是否緩存有屬於所述第一類型的消息;若是,則調用中心協同發送單元;
中心協同發送單元,用於將屬於所述第一類型的消息、屬於所述第二類型的消息通過低功耗藍牙協議一同發送至第二終端。
在本發明的一個實施例中,所述緩存消息判斷單元可以包括如下子單元:
啟動器啟動判斷子單元,用於第一終端在確定所述消息屬於第二類型時,判斷是否啟動定時器;若是,則調用消息緩存確定子單元;
消息緩存確定子單元,用於確定緩存有屬於所述第一類型的消息;
所述中心協同發送單元可以包括如下子單元:
中心雙類型發送子單元,用於將緩存隊列中屬於所述第一類型的消息、屬於所述第二類型的消息通過低功耗藍牙協議一同發送至第二終端;
第二中心定時器取消子單元,用於取消所述定時器。
在本發明的一個實施例中,該裝置還可以包括如下模塊:
外圍休眠標識接收模塊,用於通過低功耗藍牙協議接收第二終端在進入休眠狀態時發送的休眠標識;
外圍休眠狀態記錄模塊,用於將所述休眠標識記錄為第二終端的狀態標識;
和/或,
外圍活動標識接收模塊,用於通過低功耗藍牙協議接收第二終端在進入活動狀態時發送的活動標識;
外圍活動狀態記錄模塊,用於將所述活動標識記錄為第二終端的狀態標識。
在本發明的一個實施例中,該裝置還可以包括如下模塊:
外圍消息活動同步模塊,用於在所述狀態標識為活動標識時,將所述消息通過低功耗藍牙協議發送至第二終端。
參照圖6,示出了本發明的另一種基於低功耗藍牙協議的通信裝置實施例的結構框圖,應用在第二終端600中,該裝置具體可以包括如下模塊:
中心狀態檢測模塊601,用於作為外圍設備,在生成消息時,檢測作為中心設備的第一終端的狀態標識;
外圍緩存模塊602,用於在檢測到所述狀態標識為休眠標識時,將所述消息緩存一段時間;
中心消息休眠上報模塊603,用於在超過所述時間時,作為外圍設備、將所述消息通過低功耗藍牙協議發送至第一終端。
在本發明的一個實施例中,所述外圍緩存模塊602可以包括如下子模塊:
外圍緩存隊列存儲子模塊,用於在所述狀態標識為休眠標識時,將所述消息存儲至緩存隊列中;
外圍定時器啟動子模塊,用於啟動定時器,以計時一段時間。
在本發明的一個實施例中,所述中心消息休眠上報模塊603可以包括如下子模塊:
外圍計時發送子模塊,用於在所述定時器計時結束時,將所述緩存隊列中的消息通過低功耗藍牙協議發送至第一終端;
外圍定時器取消子模塊,用於取消所述定時器。
在本發明的一個實施例中,該裝置還可以包括如下模塊:
中心休眠標識接收模塊,用於通過低功耗藍牙協議接收第一終端在進入休眠狀態時發送的休眠標識;
中心休眠狀態記錄模塊,用於將所述休眠標識記錄為第一終端的狀態標識;
和/或,
中心活動標識接收模塊,用於通過低功耗藍牙協議接收第一終端在進入活動狀態時發送的活動標識;
中心活動狀態記錄模塊,用於將所述活動標識記錄為第一終端的狀態標識。
在本發明的一個實施例中,該裝置還可以包括如下模塊:
中心消息活動上報模塊,用於在所述狀態標識為活動標識時,將所述消息通過低功耗藍牙協議發送至第一終端。
對於裝置實施例而言,由於其與方法實施例基本相似,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。
本說明書中的各個實施例均採用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。
本領域內的技術人員應明白,本發明實施例的實施例可提供為方法、裝置、或電腦程式產品。因此,本發明實施例可採用完全硬體實施例、完全軟體實施例、或結合軟體和硬體方面的實施例的形式。而且,本發明實施例可採用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限於磁碟存儲器、CD-ROM、光學存儲器等)上實施的電腦程式產品的形式。
本發明實施例是參照根據本發明實施例的方法、終端設備(系統)、和電腦程式產品的流程圖和/或方框圖來描述的。應理解可由電腦程式指令實現流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合。可提供這些電腦程式指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數據處理終端設備的處理器以產生一個機器,使得通過計算機或其他可編程數據處理終端設備的處理器執行的指令產生用於實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些電腦程式指令也可存儲在能引導計算機或其他可編程數據處理終端設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產生包括指令裝置的製造品,該指令裝置實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些電腦程式指令也可裝載到計算機或其他可編程數據處理終端設備上,使得在計算機或其他可編程終端設備上執行一系列操作步驟以產生計算機實現的處理,從而在計算機或其他可編程終端設備上執行的指令提供用於實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
儘管已描述了本發明實施例的優選實施例,但本領域內的技術人員一旦得知了基本創造性概念,則可對這些實施例做出另外的變更和修改。所以,所附權利要求意欲解釋為包括優選實施例以及落入本發明實施例範圍的所有變更和修改。
最後,還需要說明的是,在本文中,諸如第一和第二等之類的關係術語僅僅用來將一個實體或者操作與另一個實體或操作區分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關係或者順序。而且,術語「包括」、「包含」或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者終端設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者終端設備所固有的要素。在沒有更多限制的情況下,由語句「包括一個……」限定的要素,並不排除在包括所述要素的過程、方法、物品或者終端設備中還存在另外的相同要素。
以上對本發明所提供的一種基於低功耗藍牙協議的通信方法和一種基於低功耗藍牙協議的通信裝置,進行了詳細介紹,本文中應用了具體個例對本發明的原理及實施方式進行了闡述,以上實施例的說明只是用於幫助理解本發明的方法及其核心思想;同時,對於本領域的一般技術人員,依據本發明的思想,在具體實施方式及應用範圍上均會有改變之處,綜上所述,本說明書內容不應理解為對本發明的限制。