一種藍牙驅動程序的配置方法及裝置的制造方法
【專利摘要】本發明實施例公開了一種藍牙驅動程序的配置方法及裝置,涉及通信領域用以提高藍牙芯片檢測及配置的成功率和效率。在本發明中,智能電視的用戶層接收所述智能電視的內核層上報的Netlink套接字組播消息;所述Netlink組播消息用于通知所述用戶層,當前接入所述內核層的設備所觸發的輸入事件;所述用戶層檢測到所述Netlink組播消息是由接入所述內核層的藍牙芯片所觸發上報,根據所述Netlink組播消息中攜帶的設備標識和由所述藍牙芯片觸發的輸入事件的類型,配置對應的藍牙驅動程序;從而解決了上述問題。
【專利說明】
一種藍牙驅動程序的配置方法及裝置
技術領域
[0001 ]本發明涉及通信領域,尤其涉及一種藍牙驅動程序的配置方法及裝置。
【背景技術】
[0002]隨著智能終端的功能的日益豐富,大部分智能終端具有藍牙功能。目前,所有支持藍牙功能的智能終端,其藍牙功能均是通過單獨的藍牙芯片實現。對于智能電視來說,藍牙芯片被集成在一個單獨的藍牙小板上,與電視主板通過USB總線連接。在USB總線上傳輸的數據格式和類型由藍牙協議規定,主要包括HCI cmd、ACL Data或SCO Data。
[0003]為了使藍牙芯片能夠與電視主板通信,在藍牙芯片接入到電視主板時,需要加載與該藍牙芯片的型號所匹配的驅動程序,用于完成藍牙芯片的初始化操作。在該過程中,智能電視首先需要檢測出藍牙芯片的廠家、型號等設備信息,能夠查找到匹配的驅動程序加載。在已有技術中,智能電視檢測藍牙芯片的型號的方式主要包括如下兩種:
[0004]第一種為硬件檢測方式。在已有技術中,預先為每一款藍牙芯片設定一固定電壓,利用ADC(Analog-to-Digital Converter,模數變換器)電路檢測插入的藍牙芯片的電壓,來判斷藍牙芯片型號。然而,當支持的芯片型號過多時,ADC電路的測量精度無法保證,容易出現檢測錯誤情況。
[0005]第二種為軟件檢測方式。在已有技術中,通過監控/sys/bus/usb/devices目錄是否有新的設備節點創建來判斷新設備插入,然后讀取新設備的信息來判斷是否是藍牙芯片。此種方式有兩個弊端,一個是目前Android系統對文件權限管理越來越嚴格,對/sys/bus/usb/devices目錄的訪問需要root(超級用戶)權限,因此就存在用戶程序無權訪問該目錄的情況。另外一個弊端是此種方案存在時間延時,會導致藍牙芯片檢測不及時,導致藍牙功能打開慢的問題。
【發明內容】
[0006]本發明提供一種藍牙驅動程序的配置方法及裝置,用以提高藍牙芯片檢測及配置的成功率和效率。
[0007]本發明提供了一種藍牙驅動程序的配置方法,該方法包括:
[0008]智能電視的用戶層接收所述智能電視的內核層上報的Netlink套接字組播消息;所述Netlink組播消息用于通知所述用戶層,當前接入所述內核層的設備所觸發的輸入事件;
[0009]所述用戶層檢測到所述Netlink組播消息是由接入所述內核層的藍牙芯片所觸發上報,根據所述Netlink組播消息中攜帶的設備標識和由所述藍牙芯片觸發的輸入事件的類型,配置對應的藍牙驅動程序。
[0010]本發明還提供了一種藍牙驅動程序的配置裝置,該裝置包括:
[0011]接收單元,位于智能電視的用戶層,用于接收所述智能電視的內核層上報的Netl ink套接字組播消息;所述Ne11 ink組播消息用于通知所述用戶層,當前接入所述內核層的設備所觸發的輸入事件;
[0012]配置單元,位于所述智能電視的用戶層,用于檢測由接入所述內核層的藍牙芯片所觸發上報的Netlink組播消息,根據所述Netlink組播消息中攜帶的設備標識和由所述藍牙芯片觸發的輸入事件的類型,配置對應的藍牙驅動程序。
[0013]從上述技術方案可以看出,本發明針對藍牙芯片提供了一種藍牙驅動程序的配置的方案。在本發明中,可以通過軟件的方式準確的檢測到藍牙芯片所觸發的輸入事件(如,插入或拔出事件),并確定出藍牙芯片的型號等設備信息;然后,本發明還可以根據不同型號的藍牙芯片,配置不同的藍牙驅動程序,完成相應初始化操作,可見,本發明可以在不修改硬件電路的前提下,實現藍牙驅動程序的準確配置,并提高了藍牙芯片的檢測及配置的速率和成功率。
【附圖說明】
[0014]為了更清楚地說明本發明實施例中的技術方案,下面將對實施例描述中所需要使用的附圖作簡要介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域的普通技術人員來講,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。
[0015]圖1為本發明實施例中的一種藍牙驅動程序的配置方法的流程示意圖;
[0016]圖2為本發明實施例中的一種檢測藍牙芯片插入或拔出事件的流程示意圖;
[0017]圖3為本發明實施例中的一種藍牙驅動程序的配置裝置的結構示意圖。
【具體實施方式】
[0018]為了使本發明的目的、技術方案和優點更加清楚,下面將結合附圖對本發明作進一步地詳細描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其它實施例,都屬于本發明保護的范圍。
[0019]本發明可以應用于各類智能終端(如智能電視、智能手機、平板電腦等設備)上,本發明尤其可以適用于可以通過USB接口接入藍牙芯片的智能電視中。在本發明中,通過軟件的方式檢測藍牙芯片的插入和拔出事件,不需要依靠用戶層所創建的設備節點,即可快速且準確的加載對應的藍牙驅動程序。
[0020]圖1示出了本發明實施例中的一種藍牙驅動程序的配置方法的流程示意圖,如圖1所示,該流程可以包括:
[0021]步驟11:智能電視的用戶層接收智能電視的內核層上報的Netlink套接字組播消息;其中,Netlink組播消息用于通知用戶層,當前接入內核層的設備所觸發的輸入事件;
[0022]步驟12:用戶層檢測到Netlink組播消息是由接入內核層的藍牙芯片所觸發上報,根據Netlink組播消息中攜帶的設備標識和由藍牙芯片觸發的輸入事件的類型,配置對應的藍牙驅動程序。
[0023]可選的,在上述步驟11?步驟12中,加載預先創建的用于監控藍牙芯片的輸入事件的BIuetoothMonitor進程;其中,BluetoothMonitor進程處于智能電視的用戶層且與EventHub進程共享由內核層上報的Net I ink組播消息,EventHub進程用于處理由智能電視的內核層上報的輸入事件;BluetoothMoni tor進程接收內核層上報的Net I ink組播消息;BluetoothMoni tor進程判斷Net I ink組播消息是否由USB設備所觸發上報的,如果是,貝Ij進一步獲取Netlink組播消息中攜帶的設備標識,在預先設置的藍牙芯片列表中,查找是否存在與獲取到的設備標識匹配的藍牙芯片,如果存在,則將Netlink組播消息確定為由接入內核層的藍牙芯片所觸發上報的Netl ink組播消息;否則,忽略Netl ink組播消息。
[0024]可選的,在上述步驟12中,BluetoothMonitor進程獲取Netlink組播消息中指示出的由藍牙芯片觸發的輸入事件的類型;如果輸入事件類型為加載驅動程序時,則加載相應的藍牙驅動程序;如果輸入事件類型為移除驅動程序時,則移除相應的藍牙驅動程序。
[0025]可選的,在上述步驟中,EventHub進程同步接收由接入智能電視的內核層的藍牙芯片所觸發上報的Netlink組播消息,根據Netlink組播消息中攜帶的設備標識,創建對應的設備節點。
[0026]可選的,在上述步驟11之前,通過如下步驟創建BluetoothMoni tor進程:創建用于同步接收由智能電視的內核層上報至用戶層的Net I ink組播消息的Socket通道;定義至少能夠用于檢測Netlink組播消息中所攜帶的設備信息、輸入事件類型的數據結構;其中,設備信息中至少包括設備ID、設備名稱或設備識別碼。
[0027]整體來說,本發明具有如下優點:
[0028]第一,本發明提供一種純軟件的方式,根據藍牙芯片的插入或拔出事件,加載或移除對應的藍牙驅動程序,不需要更改硬件電路。
[0029]第二,本發明可以適配各種類型、各種型號的藍牙芯片,由于本發明預先設置有用于檢測藍牙芯片的各設備信息的藍牙芯片列表,當存在新增的藍牙芯片設備時,只需要更新或維護藍牙芯片列表即可,這樣就使同一智能平臺上自適應多款藍牙芯片成為可能。
[0030]第三,本發明創建有用于檢測和監控藍牙芯片的BluetoothMonitor進程,提供一種藍牙驅動程序配置機制。在本發明中,BluetoothMonitor進程可以與Eventhub平級,用于同步接收內核層發送過來的netlink socket,即創建socket管道,進而通過socket管道獲取并處理由藍牙芯片插入或拔出所觸發的輸入事件。
[0031 ]首先,在本發明中,創建socket管道的偽代碼可以如下:
[0032]Socket(PF_NETLINK,SOCK_DGRAM,NETLINK_KOBJECT_UEVENT)
[0033]其中,NETLINK_KOBJECT_UEVENT類型表示設備狀態變化的消息類型。
[0034]其次,在本發明中,獲取由藍牙芯片插入或拔出所觸發的輸入事件的偽代碼可以如下:
[0035]Struct uevent
[0036]{
[0037]String act1n;/*設備狀態變化,如adcUremove*/
[0038]String path;/*設備節點的目錄*/
[0039]String subsystem;/*新設備的歸屬的子系統*/
[0040]String firmware ;/*新設備的固件版本,可選*/
[0041 ] Int major;/*新設備的主設備號*/
[0042]Int minor;/*新設備的次設備號*/
[0043]Int pid;/*器件ID*/
[0044]Int vid;/*廠商ID*/
[0045]String name ;/*設備名稱*/
[0046]}
[0047]當然,上述創建socket管道的偽代碼以及獲取由藍牙芯片插入或拔出所觸發的輸入事件的偽代碼均為舉例描述,在實際應用中,可以通過其他數據格式創建socket管道或獲取輸入事件,這里僅以其中一種較優選的實現方式為例進行記載。
[0048]下面對本發明進行詳細描述。
[0049]圖2示出了本發明實施例中的一種檢測藍牙芯片插入或拔出事件的流程示意圖,如圖2所示,該流程可以包括:
[0050]步驟21: BluetoothMonitor 進程開始運行。
[0051 ] 步驟22:創建socket管道。
[0052]步驟23:BluetoothMonitor進程同步接收由位于Linux內核層的USB subsystem上報給Eventhub的Netlink socket組播消息。
[0053]步驟24:訪問接收到的Netlink socket組播消息中的subsystem成員,判斷獲取到的Netlink socket組播消息是否是由USB設備觸發上報的輸入事件,如果是,則繼續執行步驟25,否則,跳回執行步驟23。
[0054]步驟25:訪問接收到的Net I ink socket組播消息中的pid成員、vid成員和name成員,判斷獲取到的Net I ink socket組播消息中攜帶的USB設備的設備標識是否與已知藍牙芯片信息匹配,如果匹配,則繼續執行步驟26,如果不匹配,則結束本次流程。
[0055]具體實現時,在本發明實施例中,可以通過預先生成的藍牙芯片或設備列表記錄所有已知的藍牙芯片的信息,如Pid(器件ID或稱為設備ID)、vid;(廠商ID)、name(設備名稱)等等設備信息;當然,本發明實施例不僅可以記錄各種藍牙設備信息,還可以周期的對藍牙芯片或設備列表記錄中所記錄的藍牙芯片信息進行更新和維護,從而保證本發明實施例檢測到的藍牙芯片的信息的準確性。
[°°56] 步驟26:訪問接收到的Netl ink socket組播消息中的act 1n成員,判斷獲取到的Netlink socket組播消息所指示出的輸入事件類型,如果輸入事件類型為加載藍牙驅動程序,則繼續執行步驟27;如果輸入事件類型為移除藍牙驅動程序,則直接執行步驟28。
[0057]步驟27:加載與藍牙芯片匹配的藍牙驅動程序,加載firmware(固件),并進行初始化操作。
[0058]步驟28:注銷藍牙芯片的工作,移除或卸載對應的藍牙驅動程序。
[0059]從上述技術方案可以看出,本發明針對藍牙芯片提供了一種藍牙驅動程序的配置的方案。在本發明中,可以通過軟件的方式準確的檢測到藍牙芯片所觸發的輸入事件(如,插入或拔出事件),并確定出藍牙芯片的型號等設備信息;然后,本發明還可以根據不同型號的藍牙芯片,配置不同的藍牙驅動程序,完成相應初始化操作,可見,本發明可以在不修改硬件電路的前提下,實現藍牙驅動程序的準確配置,并提高了藍牙芯片的檢測及配置的速率和成功率。
[0060]基于相同的技術構思,本發明實施例還提供一種一種藍牙驅動程序的配置裝置,圖3示出了本發明實施例中的一種藍牙驅動程序的配置裝置的結構示意圖,如圖3所示,該裝置可以包括:
[0061]接收單元31,位于智能電視的用戶層,用于接收所述智能電視的內核層上報的Netl ink套接字組播消息;所述Ne11 ink組播消息用于通知所述用戶層,當前接入所述內核層的設備所觸發的輸入事件;
[0062]配置單元32,位于所述智能電視的用戶層,用于檢測由接入所述內核層的藍牙芯片所觸發上報的Netlink組播消息,根據所述Netlink組播消息中攜帶的設備標識和由所述藍牙芯片觸發的輸入事件的類型,配置對應的藍牙驅動程序。
[0063]可選的,所述接收單元31具體用于:加載預先創建的用于監控藍牙芯片的輸入事件的BluetoothMonitor進程;其中,所述BluetoothMonitor進程處于所述智能電視的用戶層且與EventHub進程共享由所述內核層上報的Netl ink組播消息,所述EventHub進程用于處理由所述智能電視的內核層上報的輸入事件;由所述BluetoothMonitor進程接收所述內核層上報的Netlink組播消息;所述配置單元32具體用于:由所述BluetoothMonitor進程判斷所述Netlink組播消息是否由USB設備所觸發上報的,如果是,則進一步獲取所述Netlink組播消息中攜帶的設備標識,在預先設置的藍牙芯片列表中,查找是否存在與獲取到的設備標識匹配的藍牙芯片,如果存在,則將所述Netlink組播消息確定為由接入所述內核層的藍牙芯片所觸發上報的Netl ink組播消息;否則,忽略所述Netl ink組播消息。
[0064]可選的,所述配置單元32具體用于:
[0065]由所述BluetoothMonitor進程獲取所述Netl ink組播消息中指示出的由所述藍牙芯片觸發的輸入事件的類型;如果所述輸入事件類型為加載驅動程序時,則加載相應的藍牙驅動程序;如果所述輸入事件類型為移除驅動程序時,則移除相應的藍牙驅動程序。
[0066]可選的,該裝置還包括:
[0067 ]創建單元,用于由所述EventHub進程同步接收由接入所述智能電視的內核層的藍牙芯片所觸發上報的Netlink組播消息,根據所述Netlink組播消息中攜帶的設備標識,創建對應的設備節點。
[0068]可選的,所述接收單元31還用于:
[0069]創建用于同步接收由所述智能電視的內核層上報至用戶層的Netlink組播消息的Socket通道;定義至少能夠用于檢測所述Netl ink組播消息所攜帶的設備信息、輸入事件類型的數據結構;其中,所述設備信息中至少包括設備ID、設備名稱或設備識別碼。
[0070]本發明是參照根據本發明實施例的方法、設備(系統)、和計算機程序產品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合。可提供這些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數據處理設備的處理器,使得通過該計算機或其他可編程數據處理設備的處理器執行的指令可實現流程圖中的一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
[0071]這些計算機程序指令也可存儲在能引導計算機或其他可編程數據處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產生包括指令裝置的制造品,該指令裝置實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
[0072]這些計算機程序指令也可裝載到計算機或其他可編程數據處理設備上,使得在計算機或其他可編程設備上執行一系列操作步驟以產生計算機實現的處理,從而在計算機或其他可編程設備上執行的指令提供用于實現在流程圖的一個流程或多個流程和/或方框圖的一個方框或多個方框中指定的功能的步驟。
[0073]盡管已描述了本發明的優選實施例,但本領域內的技術人員一旦得知了基本創造性概念,則可對這些實施例做出另外的變更和修改。所以,所附權利要求意欲解釋為包括優選實施例以及落入本發明范圍的所有變更和修改。
[0074]顯然,本領域的技術人員可以對本發明進行各種改動和變型而不脫離本發明的精神和范圍。這樣,倘若本發明的這些修改和變型屬于本發明權利要求及其等同技術的范圍之內,則本發明也意圖包含這些改動和變型在內。
【主權項】
1.一種藍牙驅動程序的配置方法,其特征在于,該方法包括: 智能電視的用戶層接收所述智能電視的內核層上報的Netlink套接字組播消息;所述Netlink組播消息用于通知所述用戶層,當前接入所述內核層的設備所觸發的輸入事件; 所述用戶層檢測到所述Netlink組播消息是由接入所述內核層的藍牙芯片所觸發上報,根據所述Netlink組播消息中攜帶的設備標識和由所述藍牙芯片觸發的輸入事件的類型,配置對應的藍牙驅動程序。2.如權利要求1所述的方法,其特征在于,所述接收所述Netlink組播消息并檢測到所述Netlink組播消息是由接入所述內核層的藍牙芯片所觸發上報,包括: 加載預先創建的用于監控藍牙芯片的輸入事件的BluetoothMonitor進程;其中,所述BluetoothMoni tor進程處于所述智能電視的用戶層且與EventHub進程共享由所述內核層上報的Net I ink組播消息,所述EventHub進程用于處理由所述智能電視的內核層上報的輸入事件; 所述BluetoothMonitor進程接收所述內核層上報的Netl ink組播消息; 所述BluetoothMoni tor進程判斷所述Net I ink組播消息是否由USB設備所觸發上報的,如果是,則進一步獲取所述Netlink組播消息中攜帶的設備標識,在預先設置的藍牙芯片列表中,查找是否存在與獲取到的設備標識匹配的藍牙芯片,如果存在,則將所述Netlink組播消息確定為由接入所述內核層的藍牙芯片所觸發上報的Netlink組播消息;否則,忽略所述Net I ink組播消息。3.如權利要求2所述的方法,其特征在于,所述配置對應的藍牙驅動程序,包括: 所述BluetoothMoni tor進程獲取所述Netl ink組播消息中指示出的由所述藍牙芯片觸發的輸入事件的類型; 如果所述輸入事件類型為加載驅動程序時,則加載相應的藍牙驅動程序; 如果所述輸入事件類型為移除驅動程序時,則移除相應的藍牙驅動程序。4.如權利要求3所述的方法,其特征在于,該方法還包括: 所述EventHub進程同步接收由接入所述智能電視的內核層的藍牙芯片所觸發上報的Net I ink組播消息,根據所述Net I ink組播消息中攜帶的設備標識,創建對應的設備節點。5.如權利要求2-4中任一項所述的方法,其特征在于,通過如下步驟創建所述BluetoothMonitor 進程: 創建用于同步接收由所述智能電視的內核層上報至用戶層的Netlink組播消息的Socket 通道; 定義至少能夠用于檢測所述Netlink組播消息中所攜帶的設備信息、輸入事件類型的數據結構; 其中,所述設備信息中至少包括設備ID、設備名稱或設備識別碼。6.一種藍牙驅動程序的配置裝置,其特征在于,該裝置包括: 接收單元,位于智能電視的用戶層,用于接收所述智能電視的內核層上報的Netlink套接字組播消息;所述Netlink組播消息用于通知所述用戶層,當前接入所述內核層的設備所觸發的輸入事件; 配置單元,位于所述智能電視的用戶層,用于檢測由接入所述內核層的藍牙芯片所觸發上報的Netlink組播消息,根據所述Netlink組播消息中攜帶的設備標識和由所述藍牙芯片觸發的輸入事件的類型,配置對應的藍牙驅動程序。7.如權利要求6所述的裝置,其特征在于,所述接收單元具體用于: 加載預先創建的用于監控藍牙芯片的輸入事件的BluetoothMonitor進程;其中,所述BluetoothMoni tor進程處于所述智能電視的用戶層且與EventHub進程共享由所述內核層上報的Net I ink組播消息,所述EventHub進程用于處理由所述智能電視的內核層上報的輸入事件;由所述BluetoothMoni tor進程接收所述內核層上報的Net I ink組播消息; 所述配置單元具體用于:由所述BluetoothMoni tor進程判斷所述Net I ink組播消息是否由USB設備所觸發上報的,如果是,則進一步獲取所述Netlink組播消息中攜帶的設備標識,在預先設置的藍牙芯片列表中,查找是否存在與獲取到的設備標識匹配的藍牙芯片,如果存在,則將所述Netlink組播消息確定為由接入所述內核層的藍牙芯片所觸發上報的Net I ink組播消息;否則,忽略所述Net I ink組播消息。8.如權利要求7所述的裝置,其特征在于,所述配置單元具體用于: 由所述BluetoothMoni tor進程獲取所述Net I ink組播消息中指示出的由所述藍牙芯片觸發的輸入事件的類型;如果所述輸入事件類型為加載驅動程序時,則加載相應的藍牙驅動程序;如果所述輸入事件類型為移除驅動程序時,則移除相應的藍牙驅動程序。9.如權利要求8所述的裝置,其特征在于,該裝置還包括: 創建單元,用于由所述EventHub進程同步接收由接入所述智能電視的內核層的藍牙芯片所觸發上報的Netlink組播消息,根據所述Netlink組播消息中攜帶的設備標識,創建對應的設備節點。10.如權利要求7-9中任一項所述的裝置,其特征在于,所述接收單元還用于: 創建用于同步接收由所述智能電視的內核層上報至用戶層的Netlink組播消息的Socket通道;定義至少能夠用于檢測所述Netl ink組播消息所攜帶的設備信息、輸入事件類型的數據結構;其中,所述設備信息中至少包括設備ID、設備名稱或設備識別碼。
【文檔編號】G06F9/44GK106095413SQ201610379869
【公開日】2016年11月9日
【申請日】2016年5月31日
【發明人】初德進
【申請人】青島海信電器股份有限公司