機器對機器(M2M)是一種以機器終端智慧互動為核心,經由網路實現的應用與服務;透過在機器內部嵌入無線通訊模組,以無線通訊等為接入手段,為客戶提供綜合的資訊化解決方案,滿足客戶對監控、指揮調度、資料獲取和測量等方面的資訊化需求。
傳統的M2M應用開發都是基於AT(Attention)指令集,但是隨著產業的發展日益蓬勃,愈來愈多新的應用程式開發介面(API)也相繼問世,例如高通Gobi QCMB-API(Qualcomm Gobi Connection Management API)和基於MBIM(Mobile Broadband Interface Model)協議的API。以下將介紹各種M2M API的基本架構,並著重探討新興的高通Gobi QCMB-API和基於MBIM協議的API。
AT指令集缺乏設備互通性
AT指令集是從終端設備(Terminal Equipment, TE)或資料終端設備(Data Terminal Equipment, DTE)向終端適配器(Terminal Adapter, TA)或資料電路終端設備(Data Circuit Terminal Equipment, DCE)發送的。AT指令可分為標準AT指令和廠商自訂AT指令兩種,使用者可透過一系列的AT指令進行呼叫、短訊、電話本、資料業務和傳真等方面的控制。
不過,AT指令集具有明顯的局限性,由於廠商自訂AT指令各不相同,所以基於AT指令而開發的應用,只能用於該廠商的設備,甚至是該廠商的某一款設備,無法做到相容其他廠家的設備,導致重複開發、維護,效率低的問題。
考量上述的問題,新一代M2M API工具遂導入許多新功能和設計概念。
QCMB-API強化開發環境支援
|
圖1 Gobi QCMB-API開發環境 |
Gobi QCMB-API為高通專有方案,用戶可利用這些API和相容Gobi系列處理器的設備進行通訊,同時,用戶亦可在高通網站下載軟體開發套件(SDK),支援Windows和Linux開發環境的應用程式設計。如圖1所示,Gobi QCMB-API使用Gobi API SDK提供的QMI(Qualcomm Messaging Interface)介面,這些介面定義在C/C++的一系列標頭檔裡,和一個庫檔。
下載Gobi API SDK後運行安裝檔,安裝完後將看見圖2所示目錄:
內容包括sample(GobiSampleDM)、Gobi API的說明文檔(GobiConnection MgmtAPI.pdf)、API的標頭檔(*.h)、庫檔(GobiConnectionMgmt)和開發檔實例代碼(Gobi3000Translation)。
|
圖2 Gobi API SDK目錄 |
後續進入Gobi QCMB-API開發階段,Gobi QCMB-API可涵蓋設備檢測連接和各個服務,如表1所示。Gobi QCMB-API的每個API都遵循可選的輸入/輸出參數、函數超時參數,以及輸入/輸出陣列等參數組合,這些陣列皆採用由一系列TLV三元組組成的QMI訊息結構(圖3~4)。
|
表1 Gobi QCMB-API支援服務 |
Gobi QCMB-API的函數原型,如圖5所示。相較於AT指令集,Gobi QCMB-API以函數介面的形式讓使用者更方便且容易使用,對採用該公司晶片的廠商來說,基於QCMB-API的應用性更廣一些,所有支援Gobi的設備都可使用,因而提高一定的工作效率;但是由於只能用在相容Gobi的設備上,無法做到其他系統通用的地步,還是有一定的局限性。
|
圖3 TLV三元組協議示意圖 |
MBIM提供標準化的M2M API
相較於單家廠商供應的API有其局限性,MBIM則是另一種更開放的解決方案。其為英特爾(Intel)、微軟(Microsoft)等多家通用序列匯流排開發者論壇(USB-IF)成員提出的一個新介面標準,伴隨著行動寬頻的發展,在一般筆電/超輕薄筆電(Ultrabook)、平板裝置等行動運算裝置中已廣泛應用。
MBIM統一行動寬頻設備(USB資料卡/上網卡、NGFF資料卡等)和個人電腦(PC)端的介面標準,數據機(Modem)開發廠商將不用再提供驅動程式,如目前Windows 8作業系統已經原生支援,而Linux在3.8版本之後也會支持。
事實上,自Windows 7作業系統開始,微軟就引進系統內建的行動寬頻設備管理工具,即WWAN管理介面,安裝WWAN並驅動後,系統WWAN管理介面會映射出該資料卡對應WWAN的Profile,使用者從這個系統管理介面可發起WWAN撥號或進行PIN碼管理。
Windows 8則擴展這個系統內建管理介面的功能,允許更多的操作,如SMS、Phonebook、STK、USSD管理等,還允許協力廠商開發自有功能,並顯示到這個管理介面,MBIM模型就是針對這種情況定義的新介面規範。
MBIM基於通訊類網路控制模型的子類,可做為主機和USB設備之間的協定,進而延伸網路控制模型。
MBIM API可從微軟官網下載,其在整個開發架構中所處的位置如圖6所示。MBIM API提供多種功能,不僅能滿足基本開發需求,也可支援廠商自訂的功能,如以下例子:
//初始化介面管理
hr=CoCreateInstance(CLSID_MbnInterfaceManager, NULL, CLSCTX _ALL, IID_IMbnInterfaceManager, (void**)&pMbnInterfaceMgr);
//枚舉對象
hr=pMbnInterfaceMgr->GetInterface (InterfaceID, &pMbnInterface);
//註冊通知的回檔介面
hr=pMbnInterfaceMgr->QueryInterface (IID_IConnectionPointContainer, reinterpret_cast(&pcpc));
hr=pcpc->FindConnectionPoint(IID_IMbnRegistrationEvents, &pcp);
hr=pcp->Advise(pCTestMbnSinks, &dwCookie);
// Get and Set method call pMbnRegister ->GetRegisterState(&RegisterState);
pMbnRegister->SetRegisterMode (MBN_REGISTER_MODE_MANUAL, providerID, 0, &ReqId);
// Callback functions
OnSetRegisterModeComplete(newObject, reqID, Status) {// Call back function on set operation completion}
OnRegisterStateChange(newObject) {//Callback function to notify about register state change}
基於MBIM協定開發出的程式,可用於所有支援MBIM協定的模組,對於使用者來說,不僅能大幅減少適應不同廠家模組的時間,提高工作效率,亦可為終端使用者提供統一的用戶體驗。隨著Windows 7和Windows 8的普及,以及MBIM協定愈來愈高的支援能力,基於此種開發介面的M2M應用可望與日俱增。
綜上所述,基於AT指令集的應用開發局限性最大,而基於MBIM協議的開發應用性更廣,相信在愈來愈多的廠商支援MBIM協定的請況下,基於MBIM協定應用開發將日益普遍,真正實現開發一套應用適用所有設備的概念,而這也是推展M2M應用的一個重要趨勢。
(本文作者任職於芯訊通)