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