基于低功耗的订阅式设备访问方法
【专利摘要】本发明涉及一种基于低功耗的订阅式设备访问方法。包括订阅的处理和时间调整的处理,1)订阅的处理包括设备注册、用户请求处理和周期超时处理;2)时间调整的处理包括对增加时间周期、删除时间周期、修改时间周期和定时器超时的处理。本发明通过订阅机制根据用户对目标设备的订阅请求,为相应的用户创建用户请求节点,加入相应的设备中的用户请求管理链表中,以及为相应的用户请求节点创建周期节点,加入相应的时间节点中的周期节点管理链表中;在时间调整中,将多个周期相同的定时器进行合并,减少了对周期性定时器资源的使用,减少了对设备不同时间点的访问,让CPU深度休眠,在CPU被唤醒时完成所有用户对设备的访问需求,从而降低功耗。
【专利说明】基于低功耗的订阅式设备访问方法
【技术领域】
[0001]本发明涉及一种基于低功耗的订阅式设备访问方法。
【背景技术】
[0002]在嵌入式开发中有很多应用需要对外围设备进行管理及周期性访问的需求,通常的方式是各自的模块或应用程序都独立管理,访问自己需要的设备,一般采用轮询方式。对于周期性获取,传统的实现方案就是利用操作系统提供的定时器,采取循环定时查询方式。在传统方案下将不利于嵌入式系统低功耗的实现,并且也会对定时器资源造成巨大的压力;使用这种方式不仅浪费系统资源,而且很难使嵌入式设备整体进入良好的休眠,从而导致功耗的浪费,增加了对电源需求的成本。例如电源应用模块需要周期性跟踪设备当前的电池电量信息,全球定位系统(GPS)应用需要周期性获取当前的位置信息,但GPS模块自身功耗很大,长时间开启将缩短嵌入式设备的单次使用时间。
[0003]随着技术地不断发展,为了更好地协调软、硬件资源,订阅技术应运而生。简单来讲,订阅技术与现实生活中订阅牛奶,订阅手机天气预报,订阅报纸等功能相似,就是用户与提供商预定好后,提供商按用户要求提供相关的资源或信息等。
[0004]目前,实现订阅方式的系统一般采用代理-服务器的结构或者代理-服务器-客户端的结构,在服务器-客户端之间通常采用客户端/服务器(C/S)或浏览器/服务器(B/S)模式,代理-服务器之间的通信通常基于SNMP协议或TCP/UDP协议进行。
[0005]现有技术中,主要应用于服务器网络模式,在协议层面上定义的订阅机制,没有涉及嵌入式设备内部具体的实现方法,没有针对资源和功耗进行管理。所以以上的实现方式根本无法应用在嵌入式设备上,因为嵌入式设备资源有限,功耗有限。因此需要本领域技术人员迫切解决的一个技术问题就是:如何能够创新地提出一种基于低功耗的订阅式设备访问方法。
【发明内容】
[0006]针对现有技术中存在的问题,本发明的目的在于提供一种基于低功耗的订阅式设备访问方法的技术方案,以满足低功耗要求的设备管理、访问的需求。
[0007]所述的基于低功耗的订阅式设备访问方法,其特征在于包括订阅的处理和时间调整的处理;1)订阅的处理包括设备注册、用户请求处理和周期超时处理,2)时间调整的处理包括增加时间周期处理、删除时间周期处理、修改时间周期处理和定时器超时处理。
[0008]所述的基于低功耗的订阅式设备访问方法,其特征在于所述的设备注册是对支持订阅功能的设备注册信息的处理,注册时需要提供注册参数,注册参数包括设备名称、建立资源的回调函数、释放资源的回调函数和周期超时的回调函数,对注册的设备按设备名称进行管理及提供服务,当设备名称相同时不能进行设备注册;注册时根据设备名称遍历设备管理链表,如果设备名存在,不能注册设备,如果设备名不存在,创建设备节点,保存参数到设备节点中,初始化设备节点中的用户请求管理链表,增加设备节点到设备管理链表中;建立资源的回调函数和释放资源的回调函数根据设备的需要可以不进行实现,当不需要实现时,参数可为空,周期超时的回调函数一定要实现且不能为空;
所述的用户请求处理是对接收到的用户请求类型判定是订阅增加请求类型、订阅删除请求类型或订阅修改请求类型,然后进入不同流程进行处理,用户请求内容包含用户标识、请求的类型、访问设备的周期、周期超时时接收消息的数据标识、应答时接收消息的控制标识、访问设备的名称和是否立即执行标识;立即执行标识指用户请求处理完成时立即调用周期超时的回调函数,无需等到超时再调用;
所述的周期超时处理是订阅周期超时,会收到超时通知,通知中包含超时周期,根据超时周期遍历时间管理链表,查找到对应的时间节点,遍历该时间节点中的周期节点管理链表管理的周期节点,通过周期节点找到关联的用户请求节点,即周期节点有指向用户请求节点的指针,通过用户请求节点找到对应的设备节点,即用户请求节点有指向设备节点的指针,调用设备注册的周期超时的回调函数,该函数通过数据标识通知用户订阅信息,该遍历直到周期节点管理链表最后一个周期节点通知用户订阅信息后结束。
[0009]所述的基于低功耗的订阅式设备访问方法,其特征在于所述的增加时间周期处理,是根据用户请求节点中的时间周期,遍历时间管理链表,如果没有找到相同时间周期的时间节点,创建该周期的时间节点,保存周期值,初始化时间节点中周期节点管理链表,启动该周期定时器,增加时间节点到时间管理链表中,创建周期节点,建立与用户请求节点的关联关系,增加该周期节点到时间节点中的周期节点管理链表中;如果找到对应的时间节点时,创建周期节点,建立与用户请求节点的关系,增加该周期节点到时间节点中的周期节点管理链表中;
所述的删除时间周期处理,根据用户请求节点中的关联关系,找到对应周期节点,从该周期节点找到对应的时间节点中的周期节点管理链表,将周期节点从该时间节点中的周期节点管理链表中删除,断开与用户请求节点的关联关系,回收周期节点,如果该周期的时间节点中的周期节点管理链表中没有其他周期节点存在,则停止该周期定时器,时间节点也从时间管理链表中删除,回收时间节点;
所述的修改时间周期处理,根据用户请求节点中的关联关系,找到对应周期节点,从该周期节点找到对应的时间节点中的周期节点管理链表,将周期节点从该时间节点中的周期节点管理链表中删除,断开与用户请求节点的关联关系,回收周期节点,如果该周期的时间节点中的周期节点管理链表中没有其他周期节点存在,则停止该周期定时器,时间节点也从时间管理链表中删除,回收时间节点;使用新的时间周期修改用户请求节点中的时间周期,根据用户请求节点中的新时间周期,遍历时间管理链表,如果没有找到相同时间周期的时间节点,创建该周期的时间节点,保存周期值,初始化时间节点中的周期节点管理链表,启动该周期定时器,将时间节点增加到时间管理链表中,创建周期节点,建立与用户请求节点的关系,增加该周期节点到时间节点中的周期节点管理链表中;如果找到对应的时间节点时,创建周期节点,建立与用户请求节点的关系,增加该周期节点到时间节点中的周期节点管理链表中;
所述的定时器超时处理,通知订阅管理周期超时,通知中包含超时周期时间,定时器根据周期重新计时,等待下次超时到来;每一个不同的时间周期,都对应有不同的定时器。
[0010]所述的基于低功耗的订阅式设备访问方法,其特征在于所述的订阅增加请求类型,根据用户请求中设备的名称查询设备是否存在,如果请求的设备不存在,通过控制标识通知用户订阅增加失败,否则根据用户标识查找用户是否已经请求过该设备,如果用户订阅过该设备,通过控制标识通知用户订阅增加失败,否则没有请求过该设备,创建用户请求节点,保存用户请求相关信息到用户请求节点,如果用户请求的设备注册了建立资源的回调函数调用该函数,否则跳过该步骤,将创建的用户请求节点与查找到的对应的访问设备建立关联即将创建的用户请求节点增加到对应的设备节点中的用户请求管理链表中,再将用户请求节点与周期节点建立关联关系;如果是立即执行标识调用周期超时的回调函数,否则等到周期超时时调用周期超时的回调函数,通过控制标识通知用户订阅增加成功。
[0011]所述的基于低功耗的订阅式设备访问方法,其特征在于所述的订阅删除请求类型,根据用户请求中设备的名称查询设备是否存在,如果请求的设备未找到,通过控制标识通知用户订阅删除失败,否则根据用户标识查找用户是否已经请求过该设备,如果用户未订阅过该设备,通过控制标识通知用户订阅删除失败,否则根据找到的用户请求节点与周期节点断开关联关系,再将用户请求节点与对应的访问设备断开关联即将用户请求节点从对应的设备节点中的用户请求管理链表中删除;如果设备注册了释放资源的回调函数调用该函数,否则跳过该步骤,回收用户请求节点,通过控制标识通知用户订阅删除成功。
[0012]所述的基于低功耗的订阅式设备访问方法,其特征在于所述的订阅修改请求类型,根据用户请求中设备的名称查询设备是否存在,如果请求的设备未找到,通过控制标识通知用户订阅修改失败,否则根据用户标识查找用户是否已经请求过该设备,如果用户未订阅过该设备,通过控制标识通知用户订阅修改失败,否则如果设备注册了释放资源的回调函数调用该函数,否则跳过该步骤;根据找到的用户请求节点及新的周期修改与周期节点关联关系,如果设备注册了建立资源的回调函数调用该函数,否则跳过该步骤,通过控制标识通知用户订阅修改成功。
[0013]本发明通过实现订阅机制,即根据用户对目标设备的订阅请求,为相应的用户创建用户请求节点,加入相应的设备中的用户请求管理链表中,以及为相应的用户请求节点创建周期节点,加入相应的时间节点中的周期节点管理链表中;周期超时,根据超时周期查找到对应的时间节点,遍历该时间节点中的周期节点管理链表,根据链表中的周期节点,找到关联的用户请求节点,即周期节点中有指向用户请求节点的指针,根据用户请求节点,找到对应的设备节点,即用户请求节点中有指向设备节点的指针,调用设备注册时注册的相关回调函数,通过数据标识通知用户订阅信息给用户;在时间调整中,将多个周期相同的定时器进行合并,减少了对周期性定时器资源的使用,减少了对设备不同时间点的访问,即不需要设备随时待命等待用户发起访问,可以让CPU深度的进行休眠,可以在CPU被唤醒时完成所有用户对设备的访问需求,从而降低了功耗。
【专利附图】
【附图说明】
[0014]图1是本发明的总体结构框图;
图2是本发明的关联关系的数据结构示意图;
图3是本发明的支持订阅设备的注册流程图;
图4是本发明的用户请求流程图;
图5是本发明的周期超时处理流程图; 图6是本发明的未优化周期的设备访问示意图;
图7是本发明的优化后的周期的设备访问示意图;
图8是本发明的用户请求节点与周期节点建立关联流程图;
图9是本发明的用户请求节点与周期节点断开关联流程图;
图10是本发明的用户请求节点与周期节点修改关联流程图。
【具体实施方式】
[0015]如图1,低功耗订阅根据功能在内部分为时间调整和订阅,时间调整用于“对齐”各个用户请求的到期时刻,所谓“对齐”是指将订阅周期相同的请求进行统一管理,使得订阅时尽量少使用定时器资源。定时器资源包括但不限于操作系统提供的软件定时器、硬件定时器或具有定时功能的资源。订阅完成设备注册,用户请求处理和周期超时处理,设备注册完成设备信息的注册功能,用户请求处理完成用户请求信息的保存和对用户订阅的应答及对时间调整的调用,周期超时处理完成对用户订阅信息的反馈。
[0016]设备注册提供给支持订阅功能的设备注册函数,该函数需要提供足够的灵活度,支持不同的订阅用户处理各自创建的私有数据,订阅周期到期时的回调函数处理,并且能够处理用户取消订阅时释放(回收)订阅用户的私有数据,同名设备不支持重复注册,注册函数参数包括设备名称,建立资源的回调函数,释放资源的回调函数,周期超时的回调函数。
[0017]用户根据设备注册的名称进行请求,而且每个用户对同一设备只允许请求一次订阅。要求用户订阅请求消息包含唯一的用户标识、请求的类型、订阅时间周期、用户收取订阅消息的数据标识、用户收取订阅应答消息的控制标识、访问设备的名称及是否立即执行标识。当发送用户的订阅信息时将根据具体与用户预定的收取数据标识发回给用户,若中间产生无法订阅或者订阅模块异常等也将会根据用户收取的的控制标识通知用户。
[0018]订阅没有时间调整的参与也可以完成对设备的访问功能,但此种方式与轮训方式相似对于用户请求相同周期的访问,为每个请求提供一个不同的定时器资源,无法确定访问设备的时间点,设备需要随时等候,无法完成低功耗功能。
[0019]时间调整是对定时器资源的统一整合,合并了定时周期相同的资源,减少了定时器的个数,同时对于相同周期的访问时间点可以相对固定,可以使设备不需要随时等待,可以使设备进入休眠,在访问周期超时时完成所以用户的请求处理,从而减低功耗。
[0020]在低功耗订阅中订阅与时间调整两者相辅相成,融为一体,缺一不可,如果没有订阅,时间调整就没有整合资源的意义,如果没有时间调整,订阅就失去了降低功耗的能力。
[0021]如图2,设备节点之间,用户请求节点之间,时间节点之间,周期节点之间即相同类型节点之间的链接使用了双向链表,用户请求节点和周期节点之间即不同类型数据节点之间的箭头表示相应结构体内有指针指向对方。
[0022]设备管理链表对设备节点进行管理,每个设备节点保存有相关的注册设备的信息,设备节点信息包括设备名称,建立资源的回调函数,释放资源的回调函数,周期超时的回调函数,用户请求管理链表。每个设备节点包含有用户请求管理链表,用户请求管理链表管理用户请求节点,用户请求节点保存用户对该设备的请求信息及管理信息,用户请求节点信息包括用户标识,访问设备的周期,周期超时时接收消息的数据标识,应答时接收消息的控制标识,用户私有数据,指向设备节点的指针,指向周期节点的指针。用户请求节点内包含有指向周期节点的指针,当与周期节点建立相互关联时指向周期节点,用户请求节点内包含有指向设备节点的指针,该指针主要用于根据用户请求节点可以快速找到设备节点及对用户请求节点的快速删除。
[0023]时间管理链表对时间节点进行管理,每个时间节点保存有相关的订阅时间信息,时间节点信息包括时间周期,关联的定时器,周期节点管理链表。每个时间节点包含有周期管理链表,周期管理链表管理,统一用户请求的时间周期。周期节点保存有与用户请求节点相互关联的管理信息,周期节点信息包括指向时间节点的指针,指向用户请求节点的指针。周期节点内包含有指向用户请求节点的指针,当周期节点与用户请求节点建立相互关联时指向用户请求节点,周期节点内包含有指向时间节点的指针,该指针主要用于根据周期节点可以快速找到时间节点及对周期节点的快速删除。
[0024]订阅的处理如下:
如图3,设备注册是对支持订阅功能的设备注册信息的处理,注册时需要提供注册参数,注册参数包括设备名称、建立资源的回调函数、释放资源的回调函数和周期超时的回调函数,对注册的设备按设备名称进行管理及提供服务,当设备名称相同时不能进行设备注册;注册时根据设备名称遍历设备管理链表,如果设备名存在,不能注册设备,如果设备名不存在,创建设备节点,保存参数到设备节点中,初始化设备节点中的用户请求管理链表,增加设备节点到设备管理链表中;建立资源的回调函数和释放资源的回调函数根据设备的需要可以不进行实现,当不需要实现时,参数可为空(NULL),周期超时的回调函数一定要实现且不能为空。
[0025]如图4,用户请求处理是对接收到的用户请求类型判定是订阅增加请求类型、订阅删除请求类型或订阅修改请求类型,然后进入不同流程进行处理,用户请求内容包含用户标识(UID)、请求的类型、访问设备的周期、周期超时时接收消息的数据标识(DID)、应答时接收消息的控制标识(CID)、访问设备的名称和是否立即执行标识;立即执行标识指用户请求处理完成时立即调用周期超时的回调函数,无需等到超时再调用;
如果是订阅增加请求类型,根据用户请求中设备的名称查询设备是否存在,如果请求的设备不存在,通过控制标识通知用户订阅增加失败,否则根据用户标识查找用户是否已经请求过该设备,如果用户订阅过该设备,通过控制标识通知用户订阅增加失败,否则没有请求过该设备,创建用户请求节点,保存用户请求相关信息到用户请求节点,如果用户请求的设备注册了建立资源的回调函数调用该函数,否则跳过该步骤,将创建的用户请求节点与查找到的对应的访问设备建立关联即将创建的用户请求节点增加到对应的设备节点中的用户请求管理链表中,再将用户请求节点与周期节点建立关联关系;如果是立即执行标识调用周期超时的回调函数,否则等到周期超时时调用周期超时的回调函数,通过控制标识通知用户订阅增加成功;
如果是订阅删除请求类型,根据用户请求中设备的名称查询设备是否存在,如果请求的设备未找到,通过控制标识通知用户订阅删除失败,否则根据用户标识查找用户是否已经请求过该设备,如果用户未订阅过该设备,通过控制标识通知用户订阅删除失败,否则根据找到的用户请求节点与周期节点断开关联关系,再将用户请求节点与对应的访问设备断开关联即将用户请求节点从对应的设备节点中的用户请求管理链表中删除;如果设备注册了释放资源的回调函数调用该函数,否则跳过该步骤,回收用户请求节点,通过控制标识通知用户订阅删除成功;
如果是订阅修改请求类型,根据用户请求中设备的名称查询设备是否存在,如果请求的设备未找到,通过控制标识通知用户订阅修改失败,否则根据用户标识查找用户是否已经请求过该设备,如果用户未订阅过该设备,通过控制标识通知用户订阅修改失败,否则如果设备注册了释放资源的回调函数调用该函数,否则跳过该步骤;根据找到的用户请求节点及新的周期修改与周期节点关联关系,如果设备注册了建立资源的回调函数调用该函数,否则跳过该步骤,通过控制标识通知用户订阅修改成功。
[0026]如图5,周期超时处理是订阅周期超时,会收到超时通知,通知中包含超时周期,根据超时周期遍历时间管理链表,查找到对应的时间节点,遍历该时间节点中的周期节点管理链表管理的周期节点,通过周期节点找到关联的用户请求节点,即周期节点有指向用户请求节点的指针,通过用户请求节点找到对应的设备节点,即用户请求节点有指向设备节点的指针,调用设备注册的周期超时的回调函数,该函数通过数据标识通知用户订阅信息,该遍历直到周期节点管理链表最后一个周期节点通知用户订阅信息后结束。
[0027]其中建立与时间调整的关联将在时间调整设计实现中具体描述。订阅采用单任务的设计方式也为用户的请求带来了便利,串行化的处理使得共享资源的处理无需复杂的同步机制。
[0028]时间调整设计实现原理:
时间调整主要作用是对齐离散时间点的用户周期请求,主要设计思想围绕如何减少定时器的使用个数,以及如何使得离散时间点的到期时间能够统一,统一到期周期就意味着可以长时间没有分散的超时请求就可以让外部长时间不产生中断,CPU也可以安安心心进入更深层次的低功耗状态;但是一般系统需要维护着秒级别的系统时间,为了配合系统时间的运作,我们约定用户订阅周期的最小粒度是秒,而且可以考虑将无序的用户订阅请求到期时刻对齐到秒更新时刻,这样子就可以减少中断同时也可以进行订阅处理。
[0029]时间调整的设计将主要考虑如何减少定时器的使用个数。对于极端情形,用户对于外设信息获取周期将无法做任何对齐,这样子将使得时间管理对于每个用户都需要单独请求时间周期。但是更为一般的情形是,用户对于设备的请求周期分布在固定的几个周期上。这样子在不考虑周期间的最小公倍数也可以节省定时器的前提下,也可以省下可观的定时器,时间调整将相同的请求周期只使用一个定时器进行处理。
[0030]在不使用时间调整的情况:
如图6,用户1、用户2、用户3都对设备A每隔Cycl周期进行访问。由于访问的时刻不一致,用户I在tl时刻开始访问,用户2在t2时刻开始访问,用户3在t3时刻开始访问,tl〈t2〈t3导致每个用户需要分别有自己的定时器来维护访问时间,这样就产生了 3个定时器。从而产生的访问周期时刻用户I为tl+n* Cycl,用户2为t2+n* Cycl,用户3为t3+n* Cycl,η为第几次访问设备,此种访问方式需要设备A随时待命等待用户的访问,根本无法进行休眠,导致设备A —直工作使得嵌入式设备功耗增加。
[0031]在使用时间调整的情况:
如图7,用户1、用户2、用户3都对设备A每隔Cycl周期进行访问。虽然访问的时刻不一至文,用户I在tl时刻开始访问,用户2在t2时刻开始访问,用户3在t3时刻开始访问,tl〈t2〈( tl+Cycl)<t3< (tl+2*Cycl)但访问的周期相同,开始时为用户I建立Cycl周期定时器,用户2在t2时刻开始访问时,发现已经建立过Cycl周期定时器就将t2时刻对齐到tl+Cycl时刻访问设备A,这样用户1、用户2可以使用同一个定时器,在tl+Cycl时刻分别访问设备A。当用户3在t3时刻开始访问时,发现已经建立过Cycl周期定时器就将t3时刻对齐到tl+2*Cycl时刻访问设备A,这样用户1、用户2、用户3可以使用同一个定时器,在tl+2*Cycl时刻分别访问设备A。访问设备A的周期时刻tl+n*Cycl, η为第几次访问设备,此种访问方式不需要设备A随时待命,只需要等到规定的时刻到来访问该设备的用户都可以得到响应,设备可以进入深度休眠使得嵌入式设备功耗大幅降低。
[0032]时间调整的处理如下:
如果是增加时间周期,根据用户请求节点中的时间周期,遍历时间管理链表,如果没有找到相同时间周期的时间节点,创建该周期的时间节点,保存周期值,初始化时间节点中周期节点管理链表,启动该周期定时器,增加时间节点到时间管理链表中,创建周期节点,建立与用户请求节点的关联关系,即周期节点中的用户请求节点指针指向用户请求节点,用户请求节点中的周期节点指针指向周期节点,周期节点中时间节点指针指向时间节点,增加该周期节点到时间节点中的周期节点管理链表中;如果找到对应的时间节点时,创建周期节点,建立与用户请求节点的关系,即周期节点中的用户请求节点指针指向用户请求节点,用户请求节点中的周期节点指针指向周期节点,周期节点中时间节点指针指向时间节点,增加该周期节点到时间节点中的周期节点管理链表中,如图8。
[0033]如果是删除时间周期,根据用户请求节点中的关联关系,即用户请求节点中的周期节点指针指向周期节点,找到对应周期节点,从该周期节点找到对应的时间节点中的周期节点管理链表,即周期节点中的时间节点指针指向时间节点,将周期节点从该时间节点中的周期节点管理链表中删除,断开与用户请求节点的关联关系,回收周期节点,如果该周期的时间节点中的周期节点管理链表中没有其他周期节点存在,则停止该周期定时器,时间节点也从时间管理链表中删除,回收时间节点,如图9。
[0034]如果是修改时间周期,根据用户请求节点中的关联关系,即用户请求节点中的周期节点指针指向周期节点,找到对应周期节点,从该周期节点找到对应的时间节点中的周期节点管理链表,即周期节点中的时间节点指针指向时间节点,将周期节点从该时间节点中的周期节点管理链表中删除,断开与用户请求节点的关联关系,回收周期节点,如果该周期的时间节点中的周期节点管理链表中没有其他周期节点存在,则停止该周期定时器,时间节点也从时间管理链表中删除,回收时间节点;使用新的时间周期修改用户请求节点中的时间周期,根据用户请求节点中的新时间周期,遍历时间管理链表,如果没有找到相同时间周期的时间节点,创建该周期的时间节点,保存周期值,初始化时间节点中的周期节点管理链表,启动该周期定时器,将时间节点增加到时间管理链表中,创建周期节点,建立与用户请求节点的关系,即周期节点中的用户请求节点指针指向用户请求节点,用户请求节点中的周期节点指针指向周期节点,周期节点中时间节点指针指向时间节点,增加该周期节点到时间节点中的周期节点管理链表中;如果找到对应的时间节点时,创建周期节点,建立与用户请求节点的关系,即周期节点中的用户请求节点指针指向用户请求节点,用户请求节点中的周期节点指针指向周期节点,周期节点中时间节点指针指向时间节点,增加该周期节点到时间节点中的周期节点管理链表中,如图10。
[0035]如果是定时器超时,通知订阅管理周期超时,通知中包含超时周期时间,定时器根据周期重新计时,等待下次超时到来;每一个不同的时间周期,都对应有不同的定时器。
【权利要求】
1.基于低功耗的订阅式设备访问方法,其特征在于包括订阅的处理和时间调整的处理;1)订阅的处理包括设备注册、用户请求处理和周期超时处理,2)时间调整的处理包括增加时间周期处理、删除时间周期处理、修改时间周期处理和定时器超时处理。
2.根据权利要求1所述的基于低功耗的订阅式设备访问方法,其特征在于所述的设备注册是对支持订阅功能的设备注册信息的处理,注册时需要提供注册参数,注册参数包括设备名称、建立资源的回调函数、释放资源的回调函数和周期超时的回调函数,对注册的设备按设备名称进行管理及提供服务,当设备名称相同时不能进行设备注册;注册时根据设备名称遍历设备管理链表,如果设备名存在,不能注册设备,如果设备名不存在,创建设备节点,保存参数到设备节点中,初始化设备节点中的用户请求管理链表,增加设备节点到设备管理链表中;建立资源的回调函数和释放资源的回调函数根据设备的需要可以不进行实现,当不需要实现时,参数可为空,周期超时的回调函数一定要实现且不能为空; 所述的用户请求处理是对接收到的用户请求类型判定是订阅增加请求类型、订阅删除请求类型或订阅修改请求类型,然后进入不同流程进行处理,用户请求内容包含用户标识、请求的类型、访问设备的周期、周期超时时接收消息的数据标识、应答时接收消息的控制标识、访问设备的名称和是否立即执行标识;立即执行标识指用户请求处理完成时立即调用周期超时的回调函数,无需等到超时再调用; 所述的周期超时处理是订阅周期超时,会收到超时通知,通知中包含超时周期,根据超时周期遍历时间管理链表,查找到对应的时间节点,遍历该时间节点中的周期节点管理链表管理的周期节点,通过周期节点找到关联的用户请求节点,即周期节点有指向用户请求节点的指针,通过用户请求节点找到对应的设备节点,即用户请求节点有指向设备节点的指针,调用设备注册的周期超时的回调函数,该函数通过数据标识通知用户订阅信息,该遍历直到周期节点管理链表最后一个周期节点通知用户订阅信息后结束。
3.根据权利要求1或2所述的基于低功耗的订阅式设备访问方法,其特征在于所述的增加时间周期处理,是根据用户请求节点中的时间周期,遍历时间管理链表,如果没有找到相同时间周期的时间节点,创建该周期的时间节点,保存周期值,初始化时间节点中周期节点管理链表,启动该周期定时器,增加时间节点到时间管理链表中,创建周期节点,建立与用户请求节点的关联关系,增加该周期节点到时间节点中的周期节点管理链表中;如果找到对应的时间节点时,创建周期节点,建立与用户请求节点的关系,增加该周期节点到时间节点中的周期节点管理链表中; 所述的删除时间周期处理,根据用户请求节点中的关联关系,找到对应周期节点,从该周期节点找到对应的时间节点中的周期节点管理链表,将周期节点从该时间节点中的周期节点管理链表中删除,断开与用户请求节点的关联关系,回收周期节点,如果该周期的时间节点中的周期节点管理链表中没有其他周期节点存在,则停止该周期定时器,时间节点也从时间管理链表中删除,回收时间节点; 所述的修改时间周期处理,根据用户请求节点中的关联关系,找到对应周期节点,从该周期节点找到对应的时间节点中的周期节点管理链表,将周期节点从该时间节点中的周期节点管理链表中删除,断开与用户请求节点的关联关系,回收周期节点,如果该周期的时间节点中的周期节点管理链表中没有其他周期节点存在,则停止该周期定时器,时间节点也从时间管理链表中删除,回收时间节点;使用新的时间周期修改用户请求节点中的时间周期,根据用户请求节点中的新时间周期,遍历时间管理链表,如果没有找到相同时间周期的时间节点,创建该周期的时间节点,保存周期值,初始化时间节点中的周期节点管理链表,启动该周期定时器,将时间节点增加到时间管理链表中,创建周期节点,建立与用户请求节点的关系,增加该周期节点到时间节点中的周期节点管理链表中;如果找到对应的时间节点时,创建周期节点,建立与用户请求节点的关系,增加该周期节点到时间节点中的周期节点管理链表中; 所述的定时器超时处理,通知订阅管理周期超时,通知中包含超时周期时间,定时器根据周期重新计时,等待下次超时到来;每一个不同的时间周期,都对应有不同的定时器。
4.根据权利要求2所述的基于低功耗的订阅式设备访问方法,其特征在于所述的订阅增加请求类型,根据用户请求中设备的名称查询设备是否存在,如果请求的设备不存在,通过控制标识通知用户订阅增加失败,否则根据用户标识查找用户是否已经请求过该设备,如果用户订阅过该设备,通过控制标识通知用户订阅增加失败,否则没有请求过该设备,创建用户请求节点,保存用户请求相关信息到用户请求节点,如果用户请求的设备注册了建立资源的回调函数调用该函数,否则跳过该步骤,将创建的用户请求节点与查找到的对应的访问设备建立关联即将创建的用户请求节点增加到对应的设备节点中的用户请求管理链表中,再将用户请求节点与周期节点建立关联关系;如果是立即执行标识调用周期超时的回调函数,否则等到周期超时时调用周期超时的回调函数,通过控制标识通知用户订阅增加成功。
5.根据权利要求2所述的基于低功耗的订阅式设备访问方法,其特征在于所述的订阅删除请求类型,根据用户请求中设备的名称查询设备是否存在,如果请求的设备未找到,通过控制标识通知用户订阅删除失败,否则根据用户标识查找用户是否已经请求过该设备,如果用户未订阅过该设备,通过控制标识通知用户订阅删除失败,否则根据找到的用户请求节点与周期节点断开关联关系,再将用户请求节点与对应的访问设备断开关联即将用户请求节点从对应的设备节点中的用户请求管理链表中删除;如果设备注册了释放资源的回调函数调用该函数,否则跳过该步骤,回收用户请求节点,通过控制标识通知用户订阅删除成功。
6.根据权利要求2所述的基于低功耗的订阅式设备访问方法,其特征在于所述的订阅修改请求类型,根据用户请求中设备的名称查询设备是否存在,如果请求的设备未找到,通过控制标识通知用户订阅修改失败,否则根据用户标识查找用户是否已经请求过该设备,如果用户未订阅过该设备,通过控制标识通知用户订阅修改失败,否则如果设备注册了释放资源的回调函数调用该函数,否则跳过该步骤;根据找到的用户请求节点及新的周期修改与周期节点关联关系,如果设备注册了建立资源的回调函数调用该函数,否则跳过该步骤,通过控制标识通知用户订阅修改成功。
【文档编号】G06F17/30GK104166687SQ201410362142
【公开日】2014年11月26日 申请日期:2014年7月28日 优先权日:2014年7月28日
【发明者】宫尚, 雷翔, 金忠鹤 申请人:东方通信股份有限公司