ITPub博客

首页 > 数据库 > Oracle > Android dlna核心Upnp主要函数分析(上)

Android dlna核心Upnp主要函数分析(上)

Oracle 作者:cw265 时间:2014-01-17 12:40:00 0 删除 编辑

1.发现阶段

/*

*函数含义: 控制点用于寻找设备(控制点采用SSDP协议多播寻找,设备采用SSDP协议单播响应)

*输入参数: 

*      @param  UpnpClient_Handle Hnd : 控制点执行Upnp 设备查询的一个句柄

*      @param  int Mx : 等待响应的时间(秒)  Mx值介于MAX_SEARCH_TIME、

*MIN_SEARCH_TIME之间(可包含边界值),否则要强制性的设置最大或者最小

*      @param  const char* Target:控制点搜索Upnp设备一个目标(这个目标是用Upnp1.0规

*         范定义)

*      @param  const void* Cookie:当回调函数被调用时候,传递的用户数据

*返回值:

*      返回值是一个整型变量,定义在Upnp.h中

*      UPNP_E_FINISH: Upnp的SDK未加载

*      UPNP_E_SUCCESS: 操作正常的完成

*      UPNP_E_INVALID_HANDLE: 控制点句柄是一个非法的句柄

*      UPNP_E_INVALID_PARAM:查找的目标为空,即没有搜索到可以连接的Upnp设备

* 备注:

*     查询到的Upnp设备或者控制点句柄都会放到HandleTable[] 这个数组中去

*/

int UpnpSearchAsync(UpnpClient_Handle Hnd,int Mx,const char* Target, const void* Cookie )

/*

*函数含义: Upnp设备广播设备上线(向周围的server或者Upnp设备发送发现通告,告诉它们我

*          这个Upnp设备已经注册上线了,可以搜索到或者可以开始控制我了)

*输入参数: 

*      @param  UpnpDevice_Handle Hnd : 发送广播通告的Upnp 设备的一个句柄

*      @param  int  Exp: 通告的生命时间(秒),通告过期后,设备会向网络广播新的通告

*返回值:

*      返回值是一个整型变量,定义在Upnp.h中

*      UPNP_E_FINISH: Upnp的SDK未加载

*      UPNP_E_SUCCESS: 操作正常的完成

*      UPNP_E_INVALID_HANDLE: Upnp设备句柄是一个非法的句柄

*      UPNP_E_OUTOF_MEMORY: 没有足够的资源提供发送一个新的通告

*备注: 

*      Upnp设备的广播实质上是通过向ssdp_server传递参数调用它的AdvertiseAndReply来

*       进行广播出去

*/

int UpnpSendAdvertisement(UpnpDevice_Handle Hnd, int Exp)

2.控制阶段

/*

*函数含义: 控制点查询另一台Upnp设备的一个服务状态变量的状态

*输入参数: 

*      @param  UpnpClient_Handle Hnd: 控制点的一个句柄

*      @param  const char *ActionURL_const: 被查询Upnp设备的一个服务的URL

*      @param  const char *VarName_const: 需要查询的那个状态变量的状态名

*      @param  DOMString *StVar: 用来存储状态变量值的一个指针,SDK负责分配这个字串,调用者需调用ixmlFreeDOMString.进行释放

*输出参数:

*       借助StVar将Upnp设备得到响应状态的一个string

*返回值:

*      返回值是一个整型变量,定义在Upnp.h中

*      UPNP_E_FINISH: Upnp的SDK未加载

*      UPNP_E_SUCCESS: 操作正常的完成

*      UPNP_E_INVALID_HANDLE:控制点句柄是一个非法的句柄

*      UPNP_E_INVALID_URL: 被查询Upnp设备的一个服务的URL非法

*      UPNP_E_INVALID_DESC: XML文档未被找到或者XML文档描述非法

*      UPNP_E_INVALID_PARAM: StVar指针非法或者VarName、ActionURL为空

*      UPNP_E_OUTOF_MEMORY: 资源不足,无法完成存在的操作

*      UPNP_SOAP_E_INVALID_VAR: 对于Upnp设备来说给予的变量是非法的

*备注: 

*      它是请求控制中变量请求

*      实质上是利用SOAP协议调用SoapGetServiceVarStatus函数,通过SOAP响应发送一个xml

*      格式的变量状态请求去进行解析XML

*/

int UpnpGetServiceVarStatus(UpnpClient_Handle Hnd,const char *ActionURL_const,

const char *VarName_const,DOMString *StVar)

/*

*函数含义: 控制点异步查询另一台Upnp设备的一个服务状态变量的状态

*备注: 

*     它跟上一个函数功能一样吗、,只是用到了回调函数,通过fun的回调将传递的用户数据

*     保存在Cookie

*/

int UpnpGetServiceVarStatusAsync(UpnpClient_Handle Hnd,const char *ActionURL_const,const char *VarName_const,Upnp_FunPtr Fun,const void *Cookie_const)

/*

*函数含义: 控制点通过发送一个消息改变Upnp设备一个服务的变量状态的状态值

*输入参数: 

*      @param  UpnpClient_Handle Hnd: 控制点发送Action的一个句柄

*      @param  const char *ActionURL_const: Upnp设备的一个服务的URL

*      @param  const char *ServiceType_const: service的类型

*      @param  const char *DevUDN_const: 这个参数一般被忽视或者置NULL 用来定义一个

*             设备

*      @param  Document *Action: 定义Action的名称

*      @param  IXML_Document **RespNodePtr:用来响应这个action的一个DOM文档,SDK负责

*           分配这个文档,调用者在使用完文档需调用ixmlFreeDOMString进行释放

*输出参数:

*       借助RespNodePtr将Upnp设备得到响应action的一个DOM文档

*返回值:

*      返回值是一个整型变量,定义在Upnp.h中

*      UPNP_E_FINISH: Upnp的SDK未加载

*      UPNP_E_SUCCESS: 操作正常的完成

*      UPNP_E_INVALID_HANDLE:控制点句柄是一个非法的句柄

*      UPNP_E_INVALID_URL: 被查询Upnp设备的一个服务的URL非法

*      UPNP_E_INVALID_ACTION: Action非法

*      UPNP_E_INVALID_DEVICE: DevUDN设备非法

*      UPNP_E_OUTOF_MEMORY: 资源不足,无法完成存在的操作

*      UPNP_E_INVALID_PARAM: ServiceType, Action, ActionUrl, or RespNode 是非法指 

*          针

*备注: 

*      它是请求控制中动作请求

* 实质上是利用SOAP协议调用SoapSendAction函数,发送一个xml格式去进行解析XML

*/

int UpnpSendAction(UpnpClient_Handle Hnd,const char *ActionURL_const,

const char *ServiceType_const,const char *DevUDN_const,IXML_Document *Action,

IXML_Document **RespNodePtr)

/*

*函数含义: 控制点通过发送一个消息改变Upnp设备一个服务的变量状态的状态值

*          (Ation行为不完成,这个异步调用就会一直做下去)

*备注: 

*      跟上面的函数类型,就是在DOM Document多了一个SOAP的header

* header为空还是会掉用UpnpSendAction,不为空调用SoapSendActionEx(就是在XML中多了对

*      headre的处理)

*/

int UpnpSendActionEx(UpnpClient_Handle Hnd,const char *ActionURL_const,

const char *ServiceType_const,const char *DevUDN_const,IXML_Document *Header,

IXML_Document *Action,IXML_Document **RespNodePtr)

/*

*函数含义: 控制点通过发送一个消息改变Upnp设备一个服务的变量状态的状态值

*          (Ation行为不完成,这个异步调用就会一直做下去,同时通过回调函数将响应保存)

*备注: 

*      通过回调函数Fun将得到的响应保存

*/

int UpnpSendActionExAsync(UpnpClient_Handle Hnd,const char *ActionURL_const,

const char *ServiceType_const,const char *DevUDN_const,IXML_Document *Header,

IXML_Document *Act,Upnp_FunPtr Fun,const void *Cookie_const)

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22895103/viewspace-1109536/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2009-11-18

最新文章