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