基于DLNA數字媒體適配器的設計
3 數字媒體適配器軟件設計
本系統作為DLNA產品,符合其開發標準。表1中列出了DLNA互操作架構下的關鍵技術,系統功能實現所需技術也如表1所列。軟件程序采用C語言編寫,利用Intel SDKfor UPNP Devices的庫文件代碼一起進行交叉編譯成ARM平臺Linux動態連接庫文件,供上層應用調用。開發主機采取在VMWare中安裝Linux虛擬機(Ubuntu11.10),以及arm-linux-gcc 4.3.2編譯器作為開發工具鏈。本文引用地址:http://www.j9360.com/article/148176.htm
3.1 控制點軟件模塊設計
數字媒體適配器作為數字家庭中的重要設備,能夠根據用戶提供的某項服務,在設備間實現互操作,包括設備間的通信能力以及交換有效信息的能力。控制點(Control Point)作為UPNP AV網絡中最重要的節點,負責在網絡中搜索媒體服務器和媒體渲染器,發現用戶所需要的媒體信息,協調兩者之間的交互操作。軟件采用模塊化設計思想,全局分為4個模塊;設備列表模塊、主控管理模塊、交互通信模塊以及UPNP協議模塊。圖3為控制點軟件模塊結構圖。
1)設備列表模塊
設備列表模塊用來在網絡中實時監聽、查找UPNP設備,對設備進行添加和刪除,對設備表述的XML文件進行解析,列表與設備之間一一對應。此模塊的設計實現了設備信息的緩存處理。在設備列表中,包含所有控制點需要的設備信息和設置參數;設備唯一的識別名稱、XML文件描述的網絡地址、基礎URL以及設備超時時間等。
2)主控管理模式
作為軟件模塊中的中樞部分,主控模塊基于UPNP協議模塊,與設備列表模塊與交互通信模塊均相連,完成的主要功能包括:管理設備緩存、處理客戶端命令、響應設備請求、解析設備回應。定義CtrlPointCallbackEventHandlel()函數注冊UPNP消息回調函數;接收到SSDP發現消息后,管理列表中的UPNP設備,如使用CtrtPointAddDevice()添加設備;調用CtrlPointHandleEvent()函數接收客戶端的消息,對消息進行處理;使用CtrlPointHandleSubscribeUpdate()和StateUpdate()更新訂閱和狀態列表;調用CtrlPointSendAction()和CtrlPointSendActi onNumeiicArg()給網絡中的UPNP設備發送消息。
3)交互通信模塊
交互通信模塊連接了主控模塊與UPNP客戶端,實現設備與控制點之間的交互控制,負責與客戶端的通訊流程,完成服務端、渲染器以及控制點之間的交互操作。模塊首先確定了與UPNP客戶端的通信方式,定義Upnp Get ServerIpAddress()設定IP地址、UpnpGetServerProt()設定端口,使用CtrlPoinHandleGetVar()處理主控模塊發送過來的數據包,完成對命令的解析,調用CtrlPointCommandLoop()函數連續發送指令,使用CtrlPointProcessCommand()函數將指令傳送給主控模塊,完成對命令的解析和處理。
4)UPNP協議模塊
負責所有與UPNP協議有關的內容。系統采用libupnp開發包、以UPNP庫作為底層協議,涵蓋UPNP協議所需要的API接口及庫函數。
5)UPNP客戶端
UPNP客戶端即系統輸出展示設備,包括電視、音響等。
評論