PlatinumKit库介绍

PlatinumKit库的特点


(1)由C++编写

(2)支持Windows, Mac OSX, Linux, iPhone, Android

(3)代码非常漂亮,属于自注释型,结合UPnP协议文档很容易看懂

(4)示例比较丰富,实现了多种UPnP的Device示例,包括:MediaRenderer,MediaServer,Media Control Point,Light Control 等等。


3. PlatinumKit库的主要接口


(1) PLT_UPnP


这是PlatinumKit库最重要的一个接口,该类用来维护一个或者多个UPnP的设备(Device)或者控制点(Control Point),主要接口如下:


NPT_Result AddDevice(PLT_DeviceHostReference& device); NPT_Result AddCtrlPoint(PLT_CtrlPointReference& ctrlpoint); NPT_Result RemoveDevice(PLT_DeviceHostReference& device); NPT_Result RemoveCtrlPoint(PLT_CtrlPointReference& ctrlpoint); NPT_Result Start(); NPT_Result Stop();


(2) PLT_DeviceHost


该类代表着UPnP的设备(Device),封装了UPnP的设备所包含的各种属性和动作,属性比如:设备描述、UUID等等,动作包括:广播设备信息和服务信息,反馈设备事件消息等等。


所有的自定义UPnP设备均需要继承PLT_DeviceHost类,并根据协议实现特定的方法。


(3) PLT_CtrlPoint


该类代表着UPnP的控制点(Control Point),封装了UPnP的控制点所包含的各种动作,例如搜索UPnP设备,执行设备提供的服务(Service),订阅设备事件消息等等。


该类通过PLT_CtrlPointListener类来提供的设备添加/删除/事件等消息:


class PLT_CtrlPointListener { public:     virtual ~PLT_CtrlPointListener() {}     virtual NPT_Result OnDeviceAdded(PLT_DeviceDataReference& device) = 0;     virtual NPT_Result OnDeviceRemoved(PLT_DeviceDataReference& device) = 0;     virtual NPT_Result OnActionResponse(NPT_Result res, PLT_ActionReference& action, void* userdata) = 0;     virtual NPT_Result OnEventNotify(PLT_Service* service, NPT_List<PLT_StateVariable*>* vars) = 0; };


另外,PLT_CtrlPoint类还提供了如下主要的接口:


查找设备:Search,,Discover,


调用服务:FindActionDesc,CreateAction,InvokeAction


订阅事件:Subscribe


(4) PLT_Service


该类代表着UPnP的服务(Service),封装了UPnP的控制点所包含的各种属性和动作,属性比如服务名称、服务类型等等,动作主要包括修改/获取状态变量、查找Action等等。


常用的函数如下:


PLT_StateVariable* FindStateVariable(const char* name); PLT_ActionDesc* FindActionDesc(const char* name); NPT_Result SetStateVariable(const char* name, const char* value); NPT_Result GetStateVariableValue(const char* name, NPT_String& value);


4.  示例代码


PlatinumKit库有着丰富的示例代码,可以参考学习如何实现一个简单的UPnP设备,如何利用Control Point控制设备和调用设备服务。


(1) UPnP AV Device 示例


PlatinumKit库实现了2个UPnP AV设备,MediaRenderer和MediaServer,这是一份学习DLNA/UPnP AV设备的非常不错的代码,推荐仔细阅读。该代码位于:


PlatinumKit/Platinum/Source/Devices/


(2) Control Point 示例


PlatinumKit库实现了一个基于命令行界面的媒体控制器,名叫:MicroMediaController,这是一份学习UPnP的Control Point组件的非常不错的代码,也推荐仔细阅读。该代码位于:


PlatinumKit/Platinum/Source/Apps/


(3) 其他UPnP设备示例


PlatinumKit库还实现了一些其他的UPnP设备,包括:简单设备、灯控设备等等,也可以参考学习,代码位于:


PlatinumKit/Platinum/Source/Apps/ PlatinumKit/Platinum/Source/Tests/

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值