一种定时器的启动方法、装置、电子设备及可读存储介质与流程

文档序号:29741021发布日期:2022-04-21 19:15阅读:135来源:国知局
一种定时器的启动方法、装置、电子设备及可读存储介质与流程

1.本技术涉及终端设备通信的技术领域,尤其是涉及一种定时器的启动方法、装置、电子设备及可读存储介质。


背景技术:

2.大多数的低功耗网络产品中通常采用电池供电方式,因此系统的整体功耗关系到产品的使用时间与用户体验,系统整体功耗越低,电池的续航时间越长,用户体验也会越好。lwip(light weight ip)作为一种小型开源的tcp/ip协议栈,因其轻量、功能齐全、运行ram及rom少、可裁剪移植等诸多特点,在网络产品中使用广泛。
3.虽然lwip在内存等方面为产品开发带来了诸多便利,但是lwip采用定时调度的方式,每隔一段时间调度的方式导致通信流程繁琐,增加功耗。因此,如何降低低功耗网络产品不必要的功耗,成为了亟待解决的问题。


技术实现要素:

4.有鉴于此,本技术的目的在于提供一种定时器的启动方法、装置、电子设备及可读存储介质,能够使定时器根据数据包的通信状态选择不同的工作状态,保证在低功耗网络环境通信正常的情况下实现自行切换,使得在非工作状态下不频繁启动定时器,减少不必要的功耗。
5.本技术主要包括以下几个方面:
6.第一方面,本技术实施例提供了一种定时器的启动方法,应用于定时器的启动装置,所述启动方法包括:
7.在所述启动装置的工作状态处于低功耗状态时,获取数据包的当前通信状态;其中,所述数据包包括发送包或者接收包;所述发送包为所述启动装置发送给服务器的数据包,所述接收包为服务器发送给所述启动装置的数据包;
8.根据所述当前通信状态,确定定时器的调度状态;其中,所述调度状态包括非工作状态和工作状态;
9.在所述调度状态为非工作状态时,关闭定时器;
10.在所述调度状态为工作状态时,开启定时器,控制所述启动装置进行数据传输。
11.进一步的,通过以下步骤确定所述启动装置的工作状态:
12.在所述启动装置的所有性能参数同时低于相应的预设阈值时,获取数据包,判断所述数据包是否是接收包;其中,所述性能参数包括电压和电流中的至少一个;
13.若不是接收包,确定所述启动装置的工作状态处于低功耗状态;
14.若是接收包,判断所述数据包是否带有预设标识;
15.若不带有预设标识,确定所述启动装置的工作状态处于低功耗状态;
16.若带有预设标识,确定所述启动装置的工作状态处于非低功耗状态。
17.进一步的,所述根据所述当前通信状态,确定定时器的调度状态的步骤,包括:
18.根据所述当前通信状态,确定是否具有待传输的数据包;
19.若具有待传输的数据包,确定所述定时器的调度状态为工作状态;
20.若没有待传输的数据包,确定所述定时器的调度状态为非工作状态。
21.进一步的,所述根据所述当前通信状态,确定是否具有待传输的数据包的步骤,包括:
22.根据所述当前通信状态,确定检测定时器的状态;其中,所述检测定时器的状态是开启状态或关闭状态;
23.根据所述检测定时器的状态,确定是否具有待传输的数据包;
24.若所述检测定时器的状态为关闭状态,则具有待传输的数据包;
25.若所述检测定时器的状态为开启状态,则没有待传输的数据包。
26.进一步的,所述数据包是发送包时,所述根据所述当前通信状态,确定检测定时器的状态的步骤,包括:
27.当所述数据包的当前通信状态为缓存添加状态时,确定所述检测定时器的状态是关闭状态;
28.将所述当前通信状态为缓存添加状态的数据包加入至发送缓存队列;
29.将所述发送缓存队列中的数据包进行发送,判断所述数据包是否发送成功;
30.若所述数据包发送成功,将所述数据包的当前通信状态更新为发送成功状态,将所述数据包从发送缓存队列移至等待回应队列,确定所述检测定时器的状态由关闭状态切换为开启状态;
31.将所述等待回应队列中的数据包的当前通信状态更新为等待回应状态,确定所述检测定时器的状态由开启状态切换为关闭状态;
32.根据所述当前通信状态为等待回应状态的数据包,确定是否接收到所述数据包对应的回应数据包;其中,所述回应数据包是用于确定所述启动装置与服务器之间的通信链路处于畅通状态的数据包;
33.根据是否接收到所述数据包对应的回应数据包,更新所述数据包的当前通信状态;
34.若接收到所述回应数据包,将所述数据包的当前通信状态更新为缓存删除状态,将所述数据包从等待回应队列删除,确定所述检测定时器的状态由关闭状态切换为开启状态;
35.若未接收到所述回应数据包,确定所述数据包重新发送的次数是否超限;
36.若所述次数未超限,将所述数据包的当前通信状态更新为缓存添加状态,确定所述检测定时器的状态保持关闭状态,将所述数据包从等待回应队列移至发送缓存队列进行发送,并将所述次数增加一次;
37.若所述次数超限,将所述数据包的当前通信状态更新为缓存删除状态,确定所述检测定时器的状态由关闭状态切换为开启状态,将所述数据包从等待回应队列删除,并将所述次数清零。
38.进一步的,所述将所述发送缓存队列中的数据包进行发送,判断所述数据包是否发送成功之后的步骤,还包括:
39.若所述数据包发送失败,根据所述数据包重新发送的次数,更新所述数据包的当
前通信状态;
40.若所述次数未超限,将所述数据包的当前通信状态更新为发送失败状态,确定所述检测定时器的状态保持关闭状态,重新发送所述数据包,并将所述次数增加一次;
41.若所述次数超限,将所述数据包的当前通信状态更新为缓存删除状态,确定所述检测定时器的状态由关闭状态切换为开启状态,将所述数据包从发送缓存队列删除,并将所述次数清零。
42.进一步的,所述数据包是接收包时,所述根据所述当前通信状态,确定检测定时器的状态的步骤,包括:
43.当所述数据包的当前通信状态为缓存添加状态时,确定所述当前通信状态为缓存添加状态的数据包的包序号是否是乱序,若是乱序,确定检测定时器的状态是开启状态;若不是乱序,确定检测定时器的状态是关闭状态,将所述数据包加入至接收缓存队列;
44.将所述接收缓存队列中的数据包的当前通信状态更新为缓存删除状态;
45.确定所述当前通信状态为缓存删除状态的数据包是否是回应数据包;
46.若所述数据包是回应数据包,将所述数据包从接收缓存队列删除,确定所述检测定时器的状态由关闭状态切换为开启状态;
47.若所述数据包不是回应数据包,将所述数据包从接收缓存队列删除并向服务器发送所述数据包对应的回应数据包,将所述数据包的当前通信状态更新为发送回应状态,确定所述检测定时器的状态由关闭状态切换为开启状态。
48.第二方面,本技术实施例还提供了一种定时器的启动装置,所述启动装置包括:
49.获取模块,用于在所述启动装置的工作状态处于低功耗状态时,获取数据包的当前通信状态;其中,所述数据包包括发送包或者接收包;所述发送包为所述启动装置发送给服务器的数据包,所述接收包为服务器发送给所述启动装置的数据包;
50.确定模块,用于根据所述当前通信状态,确定定时器的调度状态;其中,所述调度状态包括非工作状态和工作状态;
51.第一控制模块,用于在所述调度状态为非工作状态时,关闭定时器;
52.第二控制模块,用于在所述调度状态为工作状态时,开启定时器,控制所述启动装置进行数据传输。
53.第三方面,本技术实施例还提供一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如上述的定时器的启动方法的步骤。
54.第四方面,本技术实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如上述的定时器的启动方法的步骤。
55.本技术实施例提供的一种定时器的启动方法、装置、电子设备及可读存储介质,应用于定时器的启动装置,在所述启动装置的工作状态处于低功耗状态时,获取数据包的当前通信状态;其中,所述数据包包括发送包或者接收包;所述发送包为所述启动装置发送给服务器的数据包,所述接收包为服务器发送给所述启动装置的数据包;根据所述当前通信状态,确定定时器的调度状态;其中,所述调度状态包括非工作状态和工作状态;在所述调
度状态为非工作状态时,关闭定时器;在所述调度状态为工作状态时,开启定时器,控制所述启动装置进行数据传输。
56.这样,采用本技术提供的技术方案能够使定时器根据数据包的通信状态选择不同的工作状态,保证在低功耗网络环境通信正常的情况下实现自行切换,使得在非工作状态下不频繁启动定时器,减少不必要的功耗。
57.为使本技术的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
58.为了更清楚地说明本技术实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
59.图1示出了本技术实施例所提供的一种定时器的启动方法的流程图;
60.图2示出了本技术实施例所提供的另一种定时器的启动方法的流程图;
61.图3示出了本技术实施例所提供的数据包收发流程的示意图;
62.图4示出了本技术实施例所提供的门铃监控中定时器开启的流程图;
63.图5示出了本技术实施例所提供的事务检测的流程图;
64.图6示出了本技术实施例所提供的一种定时器的启动装置的结构示意图之一;
65.图7示出了本技术实施例所提供的一种定时器的启动装置的结构示意图之二;
66.图8示出了本技术实施例所提供的一种电子设备的结构示意图。
具体实施方式
67.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,应当理解,本技术中的附图仅起到说明和描述的目的,并不用于限定本技术的保护范围。另外,应当理解,示意性的附图并未按实物比例绘制。本技术中使用的流程图示出了根据本技术的一些实施例实现的操作。应当理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本技术内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。
68.另外,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本技术实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本技术的实施例的详细描述并非旨在限制要求保护的本技术的范围,而是仅仅表示本技术的选定实施例。基于本技术的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的全部其他实施例,都属于本技术保护的范围。
69.为了使得本领域技术人员能够使用本技术内容,结合特定应用场景“低功耗状态下定时器的调度策略”,给出以下实施方式,对于本领域技术人员来说,在不脱离本技术的精神和范围的情况下,可以将这里定义的一般原理应用于其他实施例和应用场景。
70.本技术实施例下述方法、装置、电子设备或计算机可读存储介质可以应用于任何
需要进行定时器调度的场景,本技术实施例并不对具体的应用场景作限制,任何使用本技术实施例提供的一种定时器的启动方法、装置、电子设备及可读存储介质的方案均在本技术保护范围内。
71.值得注意的是,在大多数的低功耗网络产品中通常采用电池供电方式,因此系统的整体功耗关系到产品的使用时间与用户体验,系统整体功耗越低,电池的续航时间越长,用户体验也会越好。lwip(light weight ip)作为一种小型开源的tcp/ip协议栈,因其轻量、功能齐全、运行ram及rom少、可裁剪移植等诸多特点,在网络产品中使用广泛。
72.目前,虽然lwip在内存等方面为产品开发带来了诸多便利,但是lwip采用的是定时调度的方式来保证协议的功能,却也带来了一大弊端:不管是否有数据需要处理,定时器都会启动,而采用tcp进行可靠传输的定时器调度周期极短,为250ms,这个数值则意味着在休眠状态下每秒会有四次被tcp定时器唤醒,这种每隔一段时间调度的方式导致通信流程繁琐,增加功耗。因此,如何降低低功耗网络产品不必要的功耗,成为了亟待解决的问题。
73.基于此,本技术提出了一种定时器的启动方法、装置、电子设备及可读存储介质,应用于定时器的启动装置,所述启动方法包括:在所述启动装置的工作状态处于低功耗状态时,获取数据包的当前通信状态;其中,所述数据包包括发送包或者接收包;所述发送包为所述启动装置发送给服务器的数据包,所述接收包为服务器发送给所述启动装置的数据包;根据所述当前通信状态,确定定时器的调度状态;其中,所述调度状态包括非工作状态和工作状态;在所述调度状态为非工作状态时,关闭定时器;在所述调度状态为工作状态时,开启定时器,控制所述启动装置进行数据传输。采用本技术提供的技术方案能够使定时器根据数据包的通信状态选择不同的工作状态,保证在低功耗网络环境通信正常的情况下实现自行切换,使得在非工作状态下不频繁启动定时器,减少不必要的功耗。
74.为便于对本技术进行理解,下面结合具体实施例对本技术提供的技术方案进行详细说明。
75.请参阅图1,图1为本技术实施例所提供的一种定时器的启动方法的流程图,应用于定时器的启动装置,如图1中所示,所述启动方法,包括:
76.s101、在所述启动装置的工作状态处于低功耗状态时,获取数据包的当前通信状态;
77.该步骤中,数据包包括发送包或者接收包,发送包为启动装置发送给服务器的数据包,接收包为服务器发送给启动装置的数据包;在启动装置的工作状态处于低功耗状态时,获取数据包的当前通信状态,其中,通过以下步骤确定启动装置的工作状态:
78.1)、在所述启动装置的所有性能参数同时低于相应的预设阈值时,获取数据包,判断所述数据包是否是接收包;
79.该步骤中,性能参数包括电压和电流中的至少一个,预设阈值是根据历史数据中启动装置在无需进行业务处理时的各个性能参数设置的;示例性的,获取启动装置中的电压、电流等性能参数,若获取的各个性能参数同时低于对应的预设阈值时,确定启动装置处于低功耗状态,在低功耗状态下获取数据包,并判断该数据包是否是接收包。
80.2)、若不是接收包,确定所述启动装置的工作状态处于低功耗状态;
81.该步骤中,在低功耗状态下获取的数据包若不是接收包,即获取的数据包是发送包,则启动装置的工作状态持续处于低功耗状态。
82.3)、若是接收包,判断所述数据包是否带有预设标识;
83.该步骤中,在低功耗状态下获取的数据包若是接收包,检测该数据包是否带有预设标识,根据预设标识确定启动装置的工作状态。
84.4)、若不带有预设标识,确定所述启动装置的工作状态处于低功耗状态;
85.该步骤中,若获取的接收包不带有预设标识,则启动装置的工作状态持续处于低功耗状态。
86.5)、若带有预设标识,确定所述启动装置的工作状态处于非低功耗状态。
87.该步骤中,若获取的接收包带有预设标识,则启动装置退出低功耗状态,即启动装置的工作状态处于非低功耗状态;例如,获取的接收包带有wakeup标识,则退出低功耗状态。
88.s102、根据所述当前通信状态,确定定时器的调度状态;
89.该步骤中,调度状态包括非工作状态和工作状态;需要说明的是,低功耗网络产品上电后lwip进入数据传输阶段,启动tcp协议来连接远程服务器,确保通信正常(如已建立tcp连接则无需此连接操作),tcp连接建立之后,如果一定时间之内没有数据传输,lwip协议栈自动切换为空闲关闭阶段,即非工作状态,并且切换调度方式为:数据流事件触发调度。lwip存在触发事务时,主动恢复原生tcp定时器调度机制,并自动切换为定时启动数据传输状态,即定时器的调度状态是工作状态,进行lwip相关事务处理。这里,确定定时器的调度状态主要用于确认当前是否可以进入数据传输阶段。
90.其中,根据当前通信状态,确定定时器的调度状态的步骤请参阅图2,图2为本技术实施例所提供另一种定时器的启动方法的流程图,应用于定时器的启动装置,如图2中所示,包括:
91.s201、根据所述当前通信状态,确定是否具有待传输的数据包;
92.该步骤中,根据当前通信状态,确定是否具有待传输的数据包的步骤,包括:
93.s2011、根据所述当前通信状态,确定检测定时器的状态;
94.该步骤中,检测定时器的状态是开启状态或关闭状态;根据所述当前通信状态,确定检测定时器的状态的步骤分为以下两种情况:
95.情况一、数据包是发送包时,则该通信处于发包阶段,发包由包处理层控制,与真正的系统应用相关联。完整的tcp发包阶段会产生5种tcp事务,并且将事务提交给tcp事务的自动检测模块。5种tcp事务分别为:发送数据包缓存添加、发送数据包发送成功、发送数据包发送失败、发送数据包等待回应以及发送数据包缓存删除。根据所述当前通信状态,确定检测定时器的状态的步骤,包括:
96.1)、当所述数据包的当前通信状态为缓存添加状态时,确定所述检测定时器的状态是关闭状态;
97.该步骤中,初次调度发送数据包即产生发送数据包缓存添加事务,通信状态为缓存添加状态,确定检测定时器的状态是关闭状态,进行数据包的传输。
98.2)、将所述当前通信状态为缓存添加状态的数据包加入至发送缓存队列;
99.该步骤中,将当前通信状态为缓存添加状态的数据包,即发送数据包缓存添加事务下的数据包,加入至发送缓存队列。
100.3)、将所述发送缓存队列中的数据包进行发送,判断所述数据包是否发送成功;
101.该步骤中,将发送缓存队列中的数据包进行发送,判断数据包是否发送成功,若不成功,即发送失败的步骤,包括:
102.a、若所述数据包发送失败,根据所述数据包重新发送的次数,更新所述数据包的当前通信状态;
103.该步骤中,发送数据包发送失败即产生发送数据包发送失败事务,此事务与缓存添加事务类似,只是处于发送的时机不同;根据数据包重新发送的次数,更新数据包的当前通信状态。
104.b、若所述次数未超限,将所述数据包的当前通信状态更新为发送失败状态,确定所述检测定时器的状态保持关闭状态,重新发送所述数据包,并将所述次数增加一次;
105.该步骤中,当发送失败的发送次数未超限时,当前通信状态更新为发送失败状态,检测定时器的状态保持关闭状态,等待lwip协议栈自动重发,将重新发送的次数增加一次。
106.c、若所述次数超限,将所述数据包的当前通信状态更新为缓存删除状态,确定所述检测定时器的状态由关闭状态切换为开启状态,将所述数据包从发送缓存队列删除,并将所述次数清零。
107.该步骤中,当发送失败的发送次数超限,当倩通信状态更新为缓存删除状态,将数据包从发送缓存队列删除,重启检测定时器,将检测定时器的状态由关闭状态切换为开启状态,并将重新发送的次数清零,本次发包事务流程结束。
108.4)、若所述数据包发送成功,将所述数据包的当前通信状态更新为发送成功状态,将所述数据包从发送缓存队列移至等待回应队列,确定所述检测定时器的状态由关闭状态切换为开启状态;
109.该步骤中,数据包发送成功即产生发送数据包发送成功事务,通信状态更新为发送成功状态,将数据包从发送缓存队列移至等待回应队列,重启检测定时器,将检测定时器的状态由关闭状态切换为开启状态,当前通信状态下没有待传输的数据包。
110.5)、将所述等待回应队列中的数据包的当前通信状态更新为等待回应状态,确定所述检测定时器的状态由开启状态切换为关闭状态;
111.该步骤中,在上述步骤4)中将数据包从发送缓存队列移至等待回应队列的同时产生了发送数据包等待回应事务,将等待回应队列中的数据包的当前通信状态更新为等待回应状态,关闭检测定时器,将检测定时器的状态由开启状态切换为关闭状态,等待回应包,当前通信状态下具有待传输的数据包。
112.6)、根据所述当前通信状态为等待回应状态的数据包,确定是否接收到所述数据包对应的回应数据包;
113.该步骤中,回应数据包是用于确定所述启动装置与服务器之间的通信链路处于畅通状态的数据包;根据当前通信状态为等待回应状态的数据包,确定是否接收到数据包对应的回应数据包。
114.7)、根据是否接收到所述数据包对应的回应数据包,更新所述数据包的当前通信状态;
115.该步骤中,根据是否接收到数据包对应的回应数据包,更新数据包的当前通信状态。
116.8)、若接收到所述回应数据包,将所述数据包的当前通信状态更新为缓存删除状
态,将所述数据包从等待回应队列删除,确定所述检测定时器的状态由关闭状态切换为开启状态;
117.该步骤中,发送数据包成功并收到回应,即产生发送数据包缓存删除事务,将通信状态更新为缓存删除状态,与此同时将数据包从等待回应队列清除,重启检测定时器,将检测定时器的状态由关闭状态切换为开启状态,当前通信状态下没有待传输的数据包,本次发包事务流程结束。
118.9)、若未接收到所述回应数据包,确定所述数据包重新发送的次数是否超限;
119.该步骤中,若未收到回应数据包,根据数据包重新发送的次数更新数据包的当前通信状态。
120.10)若所述次数未超限,将所述数据包的当前通信状态更新为缓存添加状态,确定所述检测定时器的状态保持关闭状态,将所述数据包从等待回应队列移至发送缓存队列进行发送,并将所述次数增加一次;
121.该步骤中,若数据包重新发送的次数未超限,将数据包的当前通信状态更新为缓存添加状态,检测定时器的状态保持关闭状态,将等待回应队列中的数据包移至发送缓存队列,进入上述步骤3)重新进行数据包的发送,并将数据包重新发送的次数增加一次。
122.11)若所述次数超限,将所述数据包的当前通信状态更新为缓存删除状态,确定所述检测定时器的状态由关闭状态切换为开启状态,将所述数据包从等待回应队列删除,并将所述次数清零。
123.该步骤中,若未接收到回应数据包,且数据包重新发送的次数超限,即产生发送数据包缓存删除事务,将数据包的当前通信状态更新为缓存删除状态,将数据包从等待回应队列删除,重启检测定时器,将检测定时器的状态由关闭状态切换为开启状态。
124.情况二、数据包是接收包时,收到的数据包经过lwip协议栈层层解析处理,将最终帧数据提交给包处理层,完整的tcp收包阶段会产生3种tcp事务,并且将事务提交给tcp事务的自动检测模块,3种tcp事务分别为:接收数据包缓存添加、接收数据包缓存删除以及接收数据包发送回应,收包阶段会收到三种类型的数据包:已发送数据包的回应、顺序数据包以及乱序数据包,根据所述当前通信状态,确定检测定时器的状态的步骤,包括:
125.1)、当所述数据包的当前通信状态为缓存添加状态时,确定所述当前通信状态为缓存添加状态的数据包的包序号是否是乱序,若是乱序,确定检测定时器的状态是开启状态;若不是乱序,确定检测定时器的状态是关闭状态,将所述数据包加入至接收缓存队列;
126.该步骤中,接收到数据包即产生接收数据包缓存添加事务,将当前通信状态确定为缓存添加状态,确定当前通信状态为缓存添加状态的数据包的包序号是否是乱序,若是乱序,则为乱序数据包,确定检测定时器的状态是开启状态,没有待传输的数据包;若不是乱序,则为顺序数据包,或已发送数据包的回应(回应数据包),确定检测定时器的状态是关闭状态,将数据包加入接收缓存队列。
127.2)、将所述接收缓存队列中的数据包的当前通信状态更新为缓存删除状态;
128.该步骤中,加入接收缓存队列的数据包为已发送数据包的回应或为顺序数据包,将接收缓存队列中的数据包上传至包处理层进行包处理,上传包数据后即产生接收数据包缓存删除事务,当前通信状态更新为缓存删除状态。
129.3)、确定所述当前通信状态为缓存删除状态的数据包是否是回应数据包;
130.该步骤中,根据解析的数据包内容,确定当前通信状态为缓存删除状态的数据包是否是回应数据包。
131.4)、若所述数据包是回应数据包,将所述数据包从接收缓存队列删除,确定所述检测定时器的状态由关闭状态切换为开启状态;
132.该步骤中,若该数据包是已发送数据包的回应(回应数据包),则将接收缓存队列中的数据包以及发送流程中的等待回应队列中对应的数据包清除,重启检测定时器,将检测定时器的状态由关闭状态切换为开启状态,当前通信状态下没有待传输的数据包,本次收包事务流程结束。
133.5)、若所述数据包不是回应数据包,将所述数据包从接收缓存队列删除并向服务器发送所述数据包对应的回应数据包,将所述数据包的当前通信状态更新为发送回应状态,确定所述检测定时器的状态由关闭状态切换为开启状态。
134.该步骤中,加入接收缓存队列的数据包若不是回应数据包,则为顺序数据包,删除接收缓存队列中的数据包并向服务器发送回应数据包,即产生接收数据包发送回应事务,将数据包的当前通信状态更新为发送回应状态,本次收包事务流程结束,重启检测定时器,将检测定时器的状态由关闭状态切换为开启状态,当前通信状态下没有待传输的数据包。
135.s2012、根据所述检测定时器的状态,确定是否具有待传输的数据包;
136.该步骤中,根据步骤s2011获取的检测定时器的状态,确定是否具有待传输的数据包,检测定时器用于检测当前通信状态下是否具有待传输的数据包。
137.s2013、若所述检测定时器的状态为关闭状态,则具有待传输的数据包;
138.该步骤中,检测定时器的状态为关闭状态,说明当前通信状态处于数据包传输状态,则具有待传输的数据包。
139.s2014、若所述检测定时器的状态为开启状态,则没有待传输的数据包。
140.该步骤中,检测定时器的状态为开启状态,说明当前通信状态处于等待状态,则没有待传输的数据包。
141.s202、若具有待传输的数据包,确定所述定时器的调度状态为工作状态;
142.该步骤中,根据步骤s201确定的具有待传输的数据包时,将定时器的调度状态确定为工作状态,即定时启动传输数据状态。
143.s203、若没有待传输的数据包,确定所述定时器的调度状态为非工作状态。
144.该步骤中,根据步骤s201确定的没有待传输的数据包时,将定时器的调度状态确定为非工作状态,即空闲关闭状态。
145.s103、在所述调度状态为非工作状态时,关闭定时器;
146.该步骤中,在调度状态为非工作状态时,即空闲关闭状态,进入空闲等待阶段,未出现数据包收发时处于空闲等待阶段,并且停止tcp时间片定时调度机制,即关闭定时器,切换调度机制为数据流事件触发调度机制。
147.s104、在所述调度状态为工作状态时,开启定时器,控制所述启动装置进行数据传输。
148.该步骤中,在调度状态为工作状态时,即定时启动传输数据状态,停止数据流事件触发调度机制,开启定时器,切换调度机制为时间片定时调度机制,控制所述启动装置进行数据传输;示例性的,这个过程主要出现在有新的数据包收发、低功耗网络产品自身切换至
唤醒态等需要lwip全功能支持的情况。
149.请参阅图3,图3为本技术实施例所提供的数据包收发流程的示意图,如图3中所示,使用lwip协议栈兼顾tcp通信与低功耗的方法,数据包收发流程包括:
150.包处理层将数据进行打包发送给tcp事务自动检测模块进行事务检测后,将数据包发送给收发调度器,收发调度器判断数据包是发送包,将数据包发送给服务器;收发调度器接收到服务器发送的数据包,进行判断数据包是否是接收包,将接收包发送给tcp事务自动检测模块进行事务检测后,将数据包发送给包处理层进行处理。
151.示例性的,请参阅图4,图4为本技术实施例所提供的门铃监控中定时器开启的流程图,如图4中所示,示例了一种摄像头与图像终端服务器处于同一局域网下的应用,门铃监控主要涉及到摄像头处于低功耗状态下的保活、唤醒包检测与其他兼顾处理措施,该方法包括:
152.摄像头端启动tcp保活,并进入低功耗状态,在低功耗状态下进行tcp事务检测,若当前通信状态下收到的数据包为tcp唤醒包(休眠前已经协商好的唤醒数据),摄像头退出低功耗状态;若当前通信状态下没有接收到服务器发送的数据包或者当前数据包不是唤醒包时,切换tcp定时器调度为数据流事件触发调度,tcp通信进入空闲等待阶段,摄像头检测到有图像终端服务器数据需要接收(即接收服务器发送的数据包),或者摄像头有tcp保活数据(tcp连接的同步数据)发送,则切换tcp定时器调度为时间片定时调度,tcp通信进入数据传输阶段。
153.其中,tcp事务检测的步骤请参阅图5,图5为本技术实施例所提供的事务检测的流程图,如图5中所示,事务检测的步骤包括:
154.判断数据包的类型,若数据包为发送包,事务更新为发送数据包缓存添加,关闭检测定时器,判断数据包是否发送成功,若发送成功,则开启检测定时器,事务更新为发送数据包等待回应,关闭检测定时器,若等待到回应,即接收到回应数据包,或未接收到回应但重传次数超限,则事务更新为发送数据包缓存删除,开启检测定时器,本次发包事务流程结束;或未接收到回应且重传次数未超限,则重新进行发送;若发送失败且发送次数超限,则事务更新为发送数据包缓存删除,开启检测定时器,本次发包事务流程结束;若发送失败且发送次数未超限,则事务更新为发送数据包发送失败,重新发送。
155.若数据包为接收包,事务更新为接收数据包缓存添加,判断数据包是否为乱序包,若为乱序包,则开启检测定时器,重新接收数据包;若不为乱序包,事务更新为接收数据包缓存删除,判断是否为已发送数据包的回应,若是,则事务更新为发送数据包缓存删除,开启检测定时器,本次收包事务流程结束;若不是,则事务更新为接收数据包发送回应,开启检测定时器,本次收包事务流程结束。
156.本技术实施例提供的一种定时器的启动方法,应用于定时器的启动装置,在所述启动装置的工作状态处于低功耗状态时,获取数据包的当前通信状态;其中,所述数据包包括发送包或者接收包;所述发送包为所述启动装置发送给服务器的数据包,所述接收包为服务器发送给所述启动装置的数据包;根据所述当前通信状态,确定定时器的调度状态;其中,所述调度状态包括非工作状态和工作状态;在所述调度状态为非工作状态时,关闭定时器;在所述调度状态为工作状态时,开启定时器,控制所述启动装置进行数据传输。
157.这样,采用本技术提供的技术方案能够使定时器根据数据包的通信状态选择不同
的工作状态,保证在低功耗网络环境通信正常的情况下实现自行切换,使得在非工作状态下不频繁启动定时器,减少不必要的功耗。
158.基于同一申请构思,本技术实施例中还提供了与上述实施例提供一种定时器的启动方法对应的一种定时器的启动装置,由于本技术实施例中的装置解决问题的原理与本技术上述实施例一种定时器的启动方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
159.请参阅图6、图7,图6为本技术实施例所提供的一种定时器的启动装置的结构示意图之一,图7为本技术实施例所提供的一种定时器的启动装置的结构示意图之二,如图6中所示,所述启动装置610包括:
160.获取模块611,用于在所述启动装置的工作状态处于低功耗状态时,获取数据包的当前通信状态;其中,所述数据包包括发送包或者接收包;所述发送包为所述启动装置发送给服务器的数据包,所述接收包为服务器发送给所述启动装置的数据包;
161.确定模块612,用于根据所述当前通信状态,确定定时器的调度状态;其中,所述调度状态包括非工作状态和工作状态;
162.第一控制模块613,用于在所述调度状态为非工作状态时,关闭定时器;
163.第二控制模块614,用于在所述调度状态为工作状态时,开启定时器,控制所述启动装置进行数据传输。
164.可选的,如图7所示,所述启动装置610还包括判断模块615,所述判断模块615在用于确定所述启动装置610的工作状态时,具体用于:
165.在所述启动装置的所有性能参数同时低于相应的预设阈值时,获取数据包,判断所述数据包是否是接收包;其中,所述性能参数包括电压和电流中的至少一个;
166.若不是接收包,确定所述启动装置的工作状态处于低功耗状态;
167.若是接收包,判断所述数据包是否带有预设标识;
168.若不带有预设标识,确定所述启动装置的工作状态处于低功耗状态;
169.若带有预设标识,确定所述启动装置的工作状态处于非低功耗状态。
170.可选的,所述确定模块612在用于根据所述当前通信状态,确定定时器的调度状态时,所述确定模块612具体用于:
171.根据所述当前通信状态,确定是否具有待传输的数据包;
172.若具有待传输的数据包,确定所述定时器的调度状态为工作状态;
173.若没有待传输的数据包,确定所述定时器的调度状态为非工作状态。
174.可选的,所述确定模块612在用于根据所述当前通信状态,确定是否具有待传输的数据包时,所述确定模块612具体用于:
175.根据所述当前通信状态,确定检测定时器的状态;其中,所述检测定时器的状态是开启状态或关闭状态;
176.根据所述检测定时器的状态,确定是否具有待传输的数据包;
177.若所述检测定时器的状态为关闭状态,则具有待传输的数据包;
178.若所述检测定时器的状态为开启状态,则没有待传输的数据包。
179.可选的,所述数据包是发送包时,所述确定模块612在用于根据所述当前通信状态,确定检测定时器的状态时,所述确定模块612具体用于:
180.当所述数据包的当前通信状态为缓存添加状态时,确定所述检测定时器的状态是关闭状态;
181.将所述当前通信状态为缓存添加状态的数据包加入至发送缓存队列;
182.将所述发送缓存队列中的数据包进行发送,判断所述数据包是否发送成功;
183.若所述数据包发送成功,将所述数据包的当前通信状态更新为发送成功状态,将所述数据包从发送缓存队列移至等待回应队列,确定所述检测定时器的状态由关闭状态切换为开启状态;
184.将所述等待回应队列中的数据包的当前通信状态更新为等待回应状态,确定所述检测定时器的状态由开启状态切换为关闭状态;
185.根据所述当前通信状态为等待回应状态的数据包,确定是否接收到所述数据包对应的回应数据包;其中,所述回应数据包是用于确定所述启动装置与服务器之间的通信链路处于畅通状态的数据包;
186.根据是否接收到所述数据包对应的回应数据包,更新所述数据包的当前通信状态;
187.若接收到所述回应数据包,将所述数据包的当前通信状态更新为缓存删除状态,将所述数据包从等待回应队列删除,确定所述检测定时器的状态由关闭状态切换为开启状态;
188.若未接收到所述回应数据包,确定所述数据包重新发送的次数是否超限;
189.若所述次数未超限,将所述数据包的当前通信状态更新为缓存添加状态,确定所述检测定时器的状态保持关闭状态,将所述数据包从等待回应队列移至发送缓存队列进行发送,并将所述次数增加一次;
190.若所述次数超限,将所述数据包的当前通信状态更新为缓存删除状态,确定所述检测定时器的状态由关闭状态切换为开启状态,将所述数据包从等待回应队列删除,并将所述次数清零。
191.可选的,所述确定模块612在用于将所述发送缓存队列中的数据包进行发送,判断所述数据包是否发送成功时,所述确定模块612还用于:
192.若所述数据包发送失败,根据所述数据包重新发送的次数,更新所述数据包的当前通信状态;
193.若所述次数未超限,将所述数据包的当前通信状态更新为发送失败状态,确定所述检测定时器的状态保持关闭状态,重新发送所述数据包,并将所述次数增加一次;
194.若所述次数超限,将所述数据包的当前通信状态更新为缓存删除状态,确定所述检测定时器的状态由关闭状态切换为开启状态,将所述数据包从发送缓存队列删除,并将所述次数清零。
195.可选的,所述数据包是接收包时,所述确定模块612在用于根据所述当前通信状态,确定检测定时器的状态时,所述确定模块612具体用于:
196.当所述数据包的当前通信状态为缓存添加状态时,确定所述当前通信状态为缓存添加状态的数据包的包序号是否是乱序,若是乱序,确定检测定时器的状态是开启状态;若不是乱序,确定检测定时器的状态是关闭状态,将所述数据包加入至接收缓存队列;
197.将所述接收缓存队列中的数据包的当前通信状态更新为缓存删除状态;
198.确定所述当前通信状态为缓存删除状态的数据包是否是回应数据包;
199.若所述数据包是回应数据包,将所述数据包从接收缓存队列删除,确定所述检测定时器的状态由关闭状态切换为开启状态;
200.若所述数据包不是回应数据包,将所述数据包从接收缓存队列删除并向服务器发送所述数据包对应的回应数据包,将所述数据包的当前通信状态更新为发送回应状态,确定所述检测定时器的状态由关闭状态切换为开启状态。
201.本技术实施例提供的一种定时器的启动装置,获取模块,用于在所述启动装置的工作状态处于低功耗状态时,获取数据包的当前通信状态;其中,所述数据包包括发送包或者接收包;所述发送包为所述启动装置发送给服务器的数据包,所述接收包为服务器发送给所述启动装置的数据包;确定模块,用于根据所述当前通信状态,确定定时器的调度状态;其中,所述调度状态包括非工作状态和工作状态;第一控制模块,用于在所述调度状态为非工作状态时,关闭定时器;第二控制模块,用于在所述调度状态为工作状态时,开启定时器,控制所述启动装置进行数据传输。
202.这样,采用本技术提供的技术方案能够使定时器根据数据包的通信状态选择不同的工作状态,保证在低功耗网络环境通信正常的情况下实现自行切换,使得在非工作状态下不频繁启动定时器,减少不必要的功耗。
203.请参阅图8,图8为本技术实施例所提供的一种电子设备的结构示意图。如图8中所示,所述电子设备800包括处理器810、存储器820和总线830。
204.所述存储器820存储有所述处理器810可执行的机器可读指令,当电子设备800运行时,所述处理器810与所述存储器820之间通过总线830通信,所述机器可读指令被所述处理器810执行时,可以执行如上述图1以及图2所示方法实施例中的定时器的启动方法的步骤,具体实现方式可参见方法实施例,在此不再赘述。
205.本技术实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时可以执行如上述图1以及图2所示方法实施例中的定时器的启动方法的步骤,具体实现方式可参见方法实施例,在此不再赘述。
206.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
207.在本技术所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
208.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
209.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
210.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
211.最后应说明的是:以上所述实施例,仅为本技术的具体实施方式,用以说明本技术的技术方案,而非对其限制,本技术的保护范围并不局限于此,尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本技术实施例技术方案的精神和范围,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1