ITPub博客

首页 > 数据库 > Oracle > Android dlna核心UPnP中主要函数分析(下)

Android dlna核心UPnP中主要函数分析(下)

Oracle 作者:吖尕兮 时间:2014-01-16 15:38:00 0 删除 编辑

3.事件

/*

*函数含义: 接受预订请求发送当前状态的eventable变量服务。(字符串数组)

*     该设备应用程序应该调用此函数时,它收到一个upnp_event_subscription_request回*

*     调。这项功能是同步的,不产生回调。

*输入参数: 

*      @param  UpnpDevice_Handle Hnd:Upnp设备的一个句柄

*      @param  const char *DevID_const:产生事件服务的子设备的设备号

*      @param  const char *ServName_const: 产生事件服务的唯一服务定位器

*      @param  const char **VarName_const: 指向事件变量数组的一个指针

*      @param  const char **NewVal_const: 指向事件变量值数组的一个指针

*      @param  int cVariables:  VarName中事件变量个数

*      @param  const Upnp_SID SubsId: 订阅我的新注册的控制点的ID

*输出参数:

*       无

*返回值:

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

*      UPNP_E_FINISH: Upnp的SDK未加载

*      UPNP_E_SUCCESS: 操作正常的完成

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

*      UPNP_E_INVALID_SERVICE: DevId/ServId 映射的是一个不合法的service

*      UPNP_E_INVALID_SID: 指定的订阅标识符不正确。

*      UPNP_E_INVALID_DEVICE: DevUDN设备非法

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

*      UPNP_E_INVALID_PARAM: VarName, NewVal, DevID, or ServID 是非法指针或者

*           cVariables<0

*备注: 

*      它是事件中接受预定请求的提醒,是GENA协议的一部分

*      实质上会走到genaInitNotify函数,在这个函数里面有个用于通知事件提醒的结构体

*      typedef struct NOTIFY_THREAD_STRUCT

*/

int UpnpAcceptSubscription(UpnpDevice_Handle Hnd,const char *DevID_const,

const char *ServName_const,const char **VarName_const,const char **NewVal_const,

int cVariables,const Upnp_SID SubsId)

/*

*函数含义: 接受预订请求发送当前状态的eventable变量服务。

*        (它需要一个文档的变量事件而不是一个字符串数组)

*备注: 

*      propertySet得到的方式不同而已

*/

int UpnpAcceptSubscriptionExt(UpnpDevice_Handle Hnd,const char *DevID_const,

const char *ServName_const,IXML_Document *PropSet,Upnp_SID SubsId)

/*

*函数含义: 发出事件的变化通知所有订阅一个特定的服务控制点(不产生回调的同步函数)

*输入参数: 

*      @param  UpnpDevice_Handle Hnd:处理设备发送事件

*      @param  const char *DevID_const:产生事件服务的子设备的设备号

*      @param  const char *ServName_const: 产生事件服务的唯一服务定位器

*      @param  const char **VarName_const: 指向那些改变了的变量的数组指针

*      @param  const char **NewVal_const: 指向新值(为那些改变了的变量)一个指针

*      @param  int cVariables:  包含本通知的计数变量

*输出参数:

*       无

*返回值:

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

*      UPNP_E_FINISH: Upnp的SDK未加载

*      UPNP_E_SUCCESS: 操作正常的完成

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

*      UPNP_E_INVALID_SERVICE: DevId/ServId 映射的是一个不合法的service

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

*      UPNP_E_INVALID_PARAM: VarName, NewVal, DevID, or ServID 是非法指针或者

*         cVariables<0

*备注: 

*      它是GENA协议的一部分,用来通知当事件变化时告知所有订阅这个特定服务的控制点

* 实质上会走到genaNotifyAll函数,在这个函数里面有个用于存放通知事件提醒的结构体

*      typedef struct NOTIFY_THREAD_STRUCT,是用线程池来进行操作的

*/

int UpnpNotify(UpnpDevice_Handle Hnd,const char *DevID_const,

const char *ServName_const,const char **VarName_const,const char **NewVal_const,

int cVariables)

/*

*函数含义: 发出事件的变化通知所有订阅一个特定的服务控制点。

*        (它需要一个文档的变量事件而不是一个字符串数组)

*备注: 

*      propertySet得到的方式不同而已

*/

int UpnpNotifyExt(UpnpDevice_Handle Hnd,const char *DevID_const,

const char *ServName_const,IXML_Document *PropSet)

/*

*函数含义: 更新即将到期订阅。(同步函数)

*输入参数: 

*      @param  UpnpDevice_Handle Hnd:更新订阅的控制点句柄

*      @param  int *TimeOut:指向一个变量包含请求的订阅时间。返回时,它包含实际的更*

*          新时间

*      @param  const Upnp_SID SubsId: 需要更定订阅的ID

*输出参数:

*       TimeOut 返回时间更新的时间

*返回值:

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

*      UPNP_E_FINISH: Upnp的SDK未加载

*      UPNP_E_SUCCESS: 操作正常的完成

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

*      UPNP_E_SOCKET_WRITE: 发生超时或者写入socket错误

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

*      UPNP_E_INVALID_PARAM: Timeout这个指针非法

*备注: 

*      它是GENA协议的一部分,用来更新当前订阅

*         实质上会走到genaRenewSubscription 函数,通过更新子订阅gena_subscribe 来一

*         个个的更新最终完成整个订阅的更新

*/

int UpnpRenewSubscription(UpnpClient_Handle Hnd,int *TimeOut,

const Upnp_SID SubsId)

/*

*函数含义: 更新即将到期订阅。

*        (会根据回调函数Fun 产生一个回调得到用户需要的回调数据Cookie)

*备注: 

*      有回调

*/

int UpnpRenewSubscriptionAsync(UpnpClient_Handle Hnd,int TimeOut,Upnp_SID SubsId,

Upnp_FunPtr Fun,const void *Cookie_const)

/*

*函数含义: 设置每个服务最大的订阅数

*         设置最大订阅数接受服务。默认值为系统资源允许接受。如果一些当前订阅的服务

*       比要求更大的价值,不接受新的订阅或更新的软件,但是并没有删除任何现有的订阅。

*输入参数: 

*      @param  UpnpDevice_Handle Hnd:处理设备的最大订阅数的句柄

*      @param  int MaxSubscriptions: 每个服务最大的订阅数

*输出参数:

*       无

*返回值:

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

*      UPNP_E_FINISH: Upnp的SDK未加载

*      UPNP_E_SUCCESS: 操作正常的完成

*      UPNP_E_INVALID_HANDLE:句柄是一个非法的句柄

*备注: 

*      目的就是将MaxSubscriptions设置到结构体Handle_Info中去,便于处理订阅时候判断

*/

Int UpnpSetMaxSubscriptions(UpnpDevice_Handle Hnd, int MaxSubscriptions)

/*

*函数含义: 设置接受订阅请求和更新订阅的最大处理世家

*输入参数: 

*      @param  UpnpDevice_Handle Hnd:处理设备的最大订阅数的句柄

*      @param  int MaxSubscriptionTimeOut: 每个服务最长的处理时间

*输出参数:

*       无

*返回值:

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

*      UPNP_E_FINISH: Upnp的SDK未加载

*      UPNP_E_SUCCESS: 操作正常的完成

*      UPNP_E_INVALID_HANDLE:句柄是一个非法的句柄

*备注: 

*      目的就是将MaxSubscriptionTimeOut设置到结构体Handle_Info中去,便于处理订阅时

*       候判断

*/

UpnpSetMaxSubscriptionTimeOut(UpnpDevice_Handle Hnd, int MaxSubscriptionTimeOut)

/*

*函数含义: 寄存器控制点接收事件通知从另一装置(同步函数)

*输入参数: 

*      @param  UpnpDevice_Handle Hnd:控制点句柄

*      @param  const char *EvtUrl_const: 服务订阅的网址

*      @param  int *TimeOut: 指向一个变量包含请求的订阅时间。返回后,它包含的实际认

*         购时间返回从服务

*      @param  Upnp_SID SubsId: 指向一个接受订阅ID的变量

*输出参数:

*       TimeOut 从服务处返回实际的认购时间

*返回值:

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

*      UPNP_E_FINISH: Upnp的SDK未加载

*      UPNP_E_SUCCESS: 操作正常的完成

*      UPNP_E_INVALID_HANDLE:句柄是一个非法的句柄

*      …….

*备注: 

*      通知另一装置接收到的事件,返回从服务器处接受订阅的时间

*/

int UpnpSubscribe(UpnpClient_Handle Hnd,const char *EvtUrl_const,int *TimeOut,

Upnp_SID SubsId)

/*

*函数含义: 寄存器控制点接收事件通知从另一装置。

*        (会根据回调函数Fun 产生一个回调得到用户需要的回调数据Cookie)

*备注: 

*      有回调

*/

int UpnpSubscribeAsync(UpnpClient_Handle Hnd,const char *EvtUrl_const,

int TimeOut,Upnp_FunPtr Fun,const void *Cookie_const)

/*

*函数含义: 删除订阅一个控制点从以前的服务订阅使用

*输入参数: 

*      @param  UpnpDevice_Handle Hnd: 订阅控制点句柄

*      @param  const Upnp_SID SubsId: 服务订阅控制点订阅服务的一个标志

*输出参数:

*       无

*返回值:

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

*      UPNP_E_FINISH: Upnp的SDK未加载

*      UPNP_E_SUCCESS: 操作正常的完成

*      UPNP_E_INVALID_HANDLE:句柄是一个非法的句柄

*      …….

*备注: 

*      把订阅的ID free掉

*/

int UpnpUnSubscribe(UpnpClient_Handle Hnd, const Upnp_SID SubsId)

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

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

注册时间:2010-03-09

最新文章