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