CN107590049B - 基于独立运行模式的数据处理方法及客户端 - Google Patents

基于独立运行模式的数据处理方法及客户端 Download PDF

Info

Publication number
CN107590049B
CN107590049B CN201710666970.9A CN201710666970A CN107590049B CN 107590049 B CN107590049 B CN 107590049B CN 201710666970 A CN201710666970 A CN 201710666970A CN 107590049 B CN107590049 B CN 107590049B
Authority
CN
China
Prior art keywords
data
message data
message
chip
power
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201710666970.9A
Other languages
English (en)
Other versions
CN107590049A (zh
Inventor
崔小甜
王少亮
夏君华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Analogix China Semiconductor Inc
Analogix International LLC
Original Assignee
Analogix China Semiconductor Inc
Analogix International LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Analogix China Semiconductor Inc, Analogix International LLC filed Critical Analogix China Semiconductor Inc
Priority to CN201710666970.9A priority Critical patent/CN107590049B/zh
Publication of CN107590049A publication Critical patent/CN107590049A/zh
Application granted granted Critical
Publication of CN107590049B publication Critical patent/CN107590049B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Power Sources (AREA)

Abstract

本发明公开了一种基于独立运行模式的数据处理方法及客户端。其中,该方法包括:接收来自独立运行芯片的中断事件;根据中断事件,检测独立运行芯片的状态信息,其中,状态信息包括独立运行芯片是否存储有功率输出PD消息数据;在独立运行芯片存储有PD消息数据的情况下,获取PD消息数据;解析并处理PD消息数据;通过类扩展接口将处理后的PD消息数据上传至操作系统。本发明解决了由于重复实现PD协议造成的耗费不必要的时间和资源成本的技术问题,同时为多端口实现提供了一种技术方案。

Description

基于独立运行模式的数据处理方法及客户端
技术领域
本发明涉及计算机领域,具体而言,涉及一种基于独立运行模式的数据处理方法及客户端。
背景技术
USB Type-C(Universal Serial Bus Type-C,通用串行总线类型C接口)是一种新型USB接口,如果想要在
Figure BDA0001372070870000011
10上使用USB Type-C多端口,并且不使用EmbeddedController(嵌入式控制器),那么需要遵从Windows
Figure BDA0001372070870000012
UcmCx(USB Connector ManagerClass Extension,USB连接器管理器类扩展)系统架构,实现USB PD(Power Delivery,功率输出)策略决策,PD协议的沟通。
然而,现有的USB Type-C芯片(该芯片为独立运行模式的芯片)已经集成了USB PD协议的实现,如果重复实现PD协议,必然会耗费不必要的时间和资源成本。
那么,如何在不实现USB功率输出2.0规范中定义的PD协议的基础上,通过与USBType-C芯片交互,向操作系统通知相关信息,成为了亟待解决的问题。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种基于独立运行模式的数据处理方法及客户端,以至少解决由于重复实现PD协议造成的耗费不必要的时间和资源成本的技术问题。
根据本发明实施例的一个方面,提供了一种基于独立运行模式的数据处理方法,包括:接收来自独立运行芯片的中断事件;根据上述中断事件,检测上述独立运行芯片的状态信息,其中,上述状态信息包括上述独立运行芯片是否存储有功率输出PD消息数据;在上述独立运行芯片存储有上述PD消息数据的情况下,获取上述PD消息数据;解析并处理上述PD消息数据;通过类扩展接口将处理后的上述PD消息数据上传至操作系统。
可选地,获取上述PD消息数据包括:从上述独立运行芯片的第一数据寄存器中读取上述PD消息数据,其中,上述第一数据寄存器的数据格式包括数据头、数据内容及校验值,上述数据头包括上述数据内容的字节数、上述校验值的字节数及上述数据内容的类型。
可选地,上述独立运行芯片包括三级缓存,其中,第一级缓存包括上述第一数据寄存器,第二级缓存和第三级缓存均包括至少一个静态栈数组,上述独立运行芯片需向上述第三级缓存写入新数据时,上述第三级缓存中存储的原数据传输至上述第二级缓存中,上述第二级缓存中存储的原数据传输至上述第一数据寄存器中。
可选地,上述获取上述PD消息数据之后,根据上述PD消息数据的类型处理上述PD消息数据之前,还包括:通过中断处理线程将上述PD消息数据存储在数据缓存中;激活PD消息处理线程,并通过上述PD消息处理线程从上述数据缓存中读取上述PD消息。
可选地,上述数据缓存包括九级缓存,每一级缓存包括一个连续的静态数据,上述九级缓存为循环队列。
可选地,上述解析并处理上述PD消息数据包括:在解析出上述PD消息数据包括供电能力的情况下,调用第一函数处理上述供电能力;在解析出上述PD消息数据包括请求数据对象RDO的情况下,调用第二函数和第三函数处理上述RDO;在解析出上述PD消息数据包括数据角色转化的请求结果的情况下,调用第四函数处理上述数据角色转化的请求结果;在解析出上述PD消息数据包括电源角色转化的请求结果的情况下,调用第五函数处理上述电源角色转化的请求结果。
可选地,上述方法,还包括:在初始化时创建数据获取线程、创建定时器以及注册定时器回调函数;在上述定时器计时到达预设时长后,检测是否获取到上述PD消息数据;若未获取到上述PD消息数据,通过上述定时器回调函数激活上述数据获取线程;通过上述数据获取线程获取上述PD消息数据。
可选地,通过上述数据获取线程获取上述PD消息数据,包括:在当前的电源角色是电源提供方的情况下,发送第一消息至上述独立运行芯片,接收上述独立运行芯片返回的RDO;在当前的电源角色是电源消耗方的情况下,发送第二消息至上述独立运行芯片,接收上述独立运行芯片返回的对端供电能力;其中,上述PD消息数据包括上述RDO和上述对端供电能力。
可选地,上述基于独立运行模式的数据处理方法应用于客户端驱动,上述客户端驱动支持多个端口。
可选地,上述方法,还包括:当有多个端口同时充电时,根据每个端口的供电能力和RDO计算每个端口的充电功率;若每个端口的充电功率相同,选取端口号最小的端口进行充电;若每个端口的充电功率不相同,选取充电功率最大的端口进行充电。
可选地,上述状态信息还包括以下至少之一:配置通道的状态、数据角色是否发生变化、电源角色是否发生变化,其中,上述配置通道的状态用于指示通用串行总线类型C接口USB Type-C上所插入的对象的类型,上述电源角色包括电源提供方和电源消耗方。
根据本发明实施例的另一方面,还提供了一种客户端,包括:接收模块,用于接收来自独立运行芯片的中断事件;检测模块,用于根据上述中断事件,检测上述独立运行芯片的状态信息,其中,上述状态信息包括上述独立运行芯片是否存储有功率输出PD消息数据;获取模块,用于在上述独立运行芯片存储有上述PD消息数据的情况下,获取上述PD消息数据;处理模块,用于解析并处理上述PD消息数据;传输模块,用于通过类扩展接口将处理后的上述PD消息数据上传至操作系统。
可选地,上述获取模块用于执行以下步骤获取上述PD消息数据:从上述独立运行芯片的第一数据寄存器中读取上述PD消息数据,其中,上述第一数据寄存器的数据格式包括数据头、数据内容及校验值,上述数据头包括上述数据内容的字节数、上述校验值的字节数及上述数据内容的类型。
可选地,客户端还包括:缓存模块,用于通过中断处理线程将上述PD消息数据存储在数据缓存中;激活PD消息处理线程,并通过上述PD消息处理线程从上述数据缓存中读取上述PD消息。
根据本发明实施例的另一方面,还提供了一种存储介质,上述存储介质包括存储的程序,其中,上述程序执行具有上述任意特征的基于独立运行模式的数据处理方法。
根据本发明实施例的另一方面,还提供了一种处理器,上述处理器用于运行程序,其中,上述程序运行时执行具有上述任意特征的基于独立运行模式的数据处理方法。
在本发明实施例中,采用接收来自独立运行芯片的中断事件;根据中断事件,检测独立运行芯片的状态信息,其中,状态信息包括独立运行芯片是否存储有功率输出PD消息数据;在独立运行芯片存储有PD消息数据的情况下,获取PD消息数据;解析并处理PD消息数据;通过类扩展接口将处理后的PD消息数据上传至操作系统的方式,通过在接收到中断事件后,检测独立运行芯片是否存储由PD消息数据,进而将处理后的PD消息数据通过类扩展接口上传至操作系统,达到了在不实现PD协议的基础上获取PD消息数据并上传至操作系统的目的,从而实现了节约时间和资源成本的技术效果,进而解决了由于重复实现PD协议造成的耗费不必要的时间和资源成本的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种可选的基于独立运行模式的数据处理方法的流程示意图;
图2是根据本发明实施例的一种可选的UcmCx客户端驱动程序的结构示意图;
图3是根据本发明实施例的另一种可选的基于独立运行模式的数据处理方法的流程示意图;
图4是根据本发明实施例的一种可选的客户端的结构示意图;
图5是根据本发明实施例的另一种可选的客户端的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
根据本发明实施例,提供了一种基于独立运行模式的数据处理方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1是根据本发明实施例的基于独立运行模式的数据处理方法,如图1所示,该方法包括如下步骤:
步骤S102,接收来自独立运行芯片的中断事件。
本申请上述步骤S102中,执行本实施例的基于独立运行模式的数据处理方法可以为客户端,该客户端上安装了驱动程序。例如可以是UcmCx客户端驱动程序,其结构如2所示,图2以2个端口为例,即USB端口实例1和USB端口实例2,可支持多端口,UcmCx连接器实例1和UcmCx连接器实例2用于实现操作系统与USB端口实例1和USB端口实例2之间的连接,各个模块由控制层控制。该客户端与独立运行芯片(例如可以是在Standalone(独立运行)模式的USB Type-C芯片)之间定义了通信接口协议,通过I2C(Intel-Integrated Circuit,两线式串行)总线接口的通信,该接口主要用于独立运行芯片与客户端进行PD消息数据的交互,使客户端获得所需信息并通过调用类扩展接口(例如可以是UcmCx接口)报告给操作系统。
客户端依靠独立运行芯片触发的中断事件,去决定开始与独立运行芯片进行通信。
步骤S104,根据中断事件,检测独立运行芯片的状态信息。
本申请上述步骤S104中,状态信息包括独立运行芯片是否存储有功率输出PD消息数据。
可选地,状态信息还包括以下至少之一:配置通道的状态、数据角色是否发生变化、电源角色是否发生变化,其中,配置通道的状态用于指示通用串行总线类型C接口USBType-C上所插入的对象的类型,电源角色包括电源提供方和电源消耗方。数据角色包括host(主机)、device(装置)、UFP(Upstream Facing Port,向上数据流端口)、DFP(Downstream Facing Port,向下数据流端口)。
当接收到来自独立运行芯片的中断事件(如图2所示,中断事件是通过独立运行芯片与客户端之间的另一个硬件接口传输的),检测CC(Configuration Channel,配置通道)line的状态、检测Data Role(数据角色)的变化、Power Role(电源角色)的变化、检测是否有PD消息数据。具体地,通过I2C总线接口读取独立运行芯片的中断寄存器接口,以实现检测独立运行芯片的状态信息。
以下独立运行芯片的中断寄存器定义了中断事件,其中,注意:I2C地址由硬件设置决定,不同的硬件设置,地址可能不同。
地址:0x58,偏移值:0xCC,如表1所示。
表1
Figure BDA0001372070870000061
地址:0x58,偏移值:0xCB,如表2所示。
表2
Figure BDA0001372070870000062
表2中,RX_BUFFER(Receive Data Registers Buffer)是指一组寄存器用于存储接收到的PD消息数据。
地址:0x7E,偏移值:0xB7,如表3所示。
表3
Figure BDA0001372070870000071
步骤S106,在独立运行芯片存储有PD消息数据的情况下,获取PD消息数据。
本申请上述步骤S106中,在独立运行芯片存储有PD消息数据的情况下,从独立运行芯片的第一寄存器(例如可以是RX_BUFFER)读取PD消息数据。
步骤S108,解析并处理PD消息数据。
本申请上述步骤S108中,解析并处理PD消息数据包括:在解析出PD消息数据包括供电能力的情况下,调用第一函数(例如,TypeCReportParterCap,用于向UcmCx模块报告对端的供电能力)处理供电能力;在解析出PD消息数据包括请求数据对象RDO的情况下,调用第二函数(例如,TypeCConnectionStateChanged,用于向UcmCx模块报告电源协商的状态)和第三函数(例如,TypeCChargeStateChanged,用于向UcmCx模块报告电源充电的状态)处理RDO;在解析出PD消息数据包括数据角色转化(DataSwap)的请求结果的情况下,调用第四函数(例如,TypeCDataRoleChanged,用于向UcmCx模块通知数据角色发生变化)处理数据角色转化的请求结果;在解析出PD消息数据包括电源角色转化(PowerSwap)的请求结果的情况下,调用第五函数(例如,TypeCPowerRoleChanged,用于向UcmCx模块通知电源角色发生变化)处理电源角色转化的请求结果。
步骤S110,通过类扩展接口将处理后的PD消息数据上传至操作系统。
本申请上述步骤S110中,将处理后的PD消息数据通过调用类扩展接口(例如可以是UcmCx接口)报告给操作系统。
通过上述步骤,可以实现在接收到中断事件后,检测独立运行芯片是否存储由PD消息数据,进而将处理后的PD消息数据通过类扩展接口上传至操作系统,达到了在不实现PD协议的基础上获取PD消息数据并上传至操作系统的目的,从而实现了节约时间和资源成本的技术效果,进而解决了由于重复实现PD协议造成的耗费不必要的时间和资源成本的技术问题。
作为一种可选的实现方式,获取PD消息数据包括:从独立运行芯片的第一数据寄存器中读取PD消息数据,其中,第一数据寄存器的数据格式包括数据头、数据内容及校验值,数据头包括数据内容的字节数、校验值的字节数及数据内容的类型。
其中,客户端从独立运行芯片的第一数据寄存器(例如可以是RX_BUFFER)中读取数据,该寄存器地址从0x7E:0xE0开始共32个连续的寄存器;客户端从独立运行芯片的第二数据寄存器(例如可以是TX_BUFFER)发送数据,该寄存器地址从0x7E:0xC0开始共32个连续的寄存器,TX_BUFFER(Transmit Data Registers Buffer)是指一组寄存器用于存储发送的PD消息数据。
本实施例的RX_BUFFER/TX_BUFFER数据格式定义可以如表4所示:
表4
数据头 数据内容 校验值
表4中,数据头:2个字节组成;第一个字节:数据内容+校验值的字节数;第二个字节:数据内容的类型。数据内容:1至29个字节。校验值:1个字节,数据头+数据内容+校验值=0。
可选地,独立运行芯片包括三级缓存,其中,第一级缓存包括第一数据寄存器,第二级缓存和第三级缓存均包括至少一个静态栈数组,独立运行芯片需向第三级缓存写入新数据时,第三级缓存中存储的原数据传输至第二级缓存中,第二级缓存中存储的原数据传输至第一数据寄存器中。
例如,独立运行芯片内部第一级缓存是32个字节的RX_BUFFER寄存器;第二级缓存和第三级缓存是两个32字节的静态栈数组。
如图3所示,通过接口从第一级缓存读取数据,独立运行芯片向第三级缓存写入数据,独立运行芯片有新数据需要写入时,原第三级缓存的数据移入到第二级缓存,而第二级缓存置换到第一级中,这样数据会有3次备份,尽可能保证数据不丢失。
作为一种可选的实现方式,获取PD消息数据之后,根据PD消息数据的类型处理PD消息数据之前,还包括:通过中断处理线程将PD消息数据存储在数据缓存中;激活PD消息处理线程,并通过PD消息处理线程从数据缓存中读取PD消息。
仍如图2所示,客户端配置了中断处理线程和PD消息处理线程,其中,中断处理线程主要用于处理检测独立运行芯片中的中断寄存器状态及从独立运行芯片读数据,PD消息处理线程主要用于数据的处理与向独立运行芯片发送数据。
可选地,数据缓存包括九级缓存,每一级缓存包括一个连续的静态数据,九级缓存为循环队列。
示例性地,客户端九级缓存实现:
a)九级缓存可以保证客户端不会丢掉消息数据。
b)每级缓存是一个连续的静态数据,其结构可以为:
Figure BDA0001372070870000091
Figure BDA0001372070870000101
其中I2C_BUFFER_SIZE被定义为40个字节长度,大于RX_BUFFER/TX_BUFFER 32个字节。
c)这九级缓存为循环队列。中断处理线程负责循环写入,PD消息处理线程负责循环读取并处理。
独立运行芯片可能会先于客户端执行完所有PD协议,例如在插着Type C Dongle(C型为适配器)启动操作系统。那么独立运行芯片会发现有Type C Dongle插入便会与TypeC Dongle进行PD的协议沟通,而操作系统启动又需要一些时间(1-2分钟或者更长),那么在操作系统启动后客户端运行起来,独立运行芯片可能已经没有任何信息传递给客户端了,那么这时候需要客户端通过通信接口去主动获取相关信息,再报告给操作系统,针对该问题,作为一种可选的实现方式,本实施例的基于独立运行模式的数据处理方法,还包括:
步骤S10,在初始化时创建数据获取线程、创建定时器以及注册定时器回调函数。
本申请上述步骤S10中,在初始化时创建一个数据获取线程,该数据获取线程用于在没有收到所需PD消息数据的情况下,从独立运行芯片获取数据,初始化时,该数据获取线程处于等待状态。在初始化时,还可以为每个端口创建一个定时器,同时注册定时器回调函数,用于监控在启动后一段时间内是否收到了来自独立运行芯片的所需的PD消息数据,当到达预设时长后,该定时器回调函数会被激活。
步骤S12,在定时器计时到达预设时长后,检测是否获取到PD消息数据。
当到达预设时长后(例如可以设置为3s,保证PD消息数据足够的时间),注册的定时器回调函数会被调用,在定时器回调函数里激活数据获取线程。
步骤S14,若未获取到PD消息数据,通过定时器回调函数激活数据获取线程。
可选地,若获取到PD消息数据,则该数据获取线程结束。
步骤S16,通过数据获取线程获取PD消息数据。
数据获取线程被激活后,它会去检查是否收到了所需的PD消息数据,如果未收到,则向独立运行芯片发送请求,请求相应的数据。获得数据后再调用类扩展接口上传给操作系统。
可选地,通过数据获取线程获取PD消息数据,包括:在当前的电源角色是电源提供方的情况下,发送第一消息至独立运行芯片,接收独立运行芯片返回的RDO;在当前的电源角色是电源消耗方的情况下,发送第二消息至独立运行芯片,接收独立运行芯片返回的对端供电能力;其中,PD消息数据包括RDO和对端供电能力。
可选地,本实施例的基于独立运行模式的数据处理方法应用于客户端驱动,该客户端驱动支持多个端口(例如图2所示的2个端口)。
作为一种可选的实现方式,本实施例的基于独立运行模式的数据处理方法,还包括:当有多个端口同时充电时,根据每个端口的供电能力和RDO计算每个端口的充电功率;若每个端口的充电功率相同,选取端口号最小的端口进行充电;若每个端口的充电功率不相同,选取充电功率最大的端口进行充电。
本实施例的基于独立运行模式的数据处理方法,还包括充电仲裁实现方案,具体的可以包括:
a)当有多个端口同时充电时,根据每个端口的供电能力和RDO计算各个端口的充电功率。
b)选取功率大的进行充电。
c)当正在充电的端口拔掉充电器后,再重新从剩余充电端口中选取功率大的进行充电。
d)当充电功率相同时,选取端口号小的进行充电。
实施例2
根据本发明实施例,提供了一种客户端的实施例,可以用于实施上述的基于独立运行模式的数据处理方法。图4是根据本发明实施例的客户端,如图4所示,该客户端包括接收模块40,用于接收来自独立运行芯片的中断事件;检测模块42,用于根据中断事件,检测独立运行芯片的状态信息,其中,状态信息包括独立运行芯片是否存储有功率输出PD消息数据;获取模块44,用于在独立运行芯片存储有PD消息数据的情况下,获取PD消息数据;处理模块46,用于解析并处理PD消息数据;传输模块48,用于通过类扩展接口将处理后的PD消息数据上传至操作系统。
在本发明实施例中,接收模块40接收来自独立运行芯片的中断事件;检测模块42根据中断事件,检测独立运行芯片的状态信息,其中,状态信息包括独立运行芯片是否存储有功率输出PD消息数据;获取模块44在独立运行芯片存储有PD消息数据的情况下,获取PD消息数据;处理模块46解析并处理PD消息数据;传输模块48通过类扩展接口将处理后的PD消息数据上传至操作系统,通过在接收到中断事件后,检测独立运行芯片是否存储由PD消息数据,进而将处理后的PD消息数据通过类扩展接口上传至操作系统,达到了在不实现PD协议的基础上获取PD消息数据并上传至操作系统的目的,从而实现了节约时间和资源成本的技术效果,进而解决了由于重复实现PD协议造成的耗费不必要的时间和资源成本的技术问题。
可选地,获取模块44用于执行以下步骤获取PD消息数据:从独立运行芯片的第一数据寄存器中读取PD消息数据,其中,第一数据寄存器的数据格式包括数据头、数据内容及校验值,数据头包括数据内容的字节数、校验值的字节数及数据内容的类型。
可选地,如图5所示,该客户端还包括:缓存模块50,用于通过中断处理线程将PD消息数据存储在数据缓存中;激活PD消息处理线程,并通过PD消息处理线程从数据缓存中读取PD消息。
可选地,独立运行芯片包括三级缓存,其中,第一级缓存包括第一数据寄存器,第二级缓存和第三级缓存均包括至少一个静态栈数组,独立运行芯片需向第三级缓存写入新数据时,第三级缓存中存储的原数据传输至第二级缓存中,第二级缓存中存储的原数据传输至第一数据寄存器中。
可选地,数据缓存包括九级缓存,每一级缓存包括一个连续的静态数据,九级缓存为循环队列。
可选地,处理模块46用于执行以下步骤解析并处理PD消息数据:在解析出PD消息数据包括供电能力的情况下,调用第一函数处理供电能力;在解析出PD消息数据包括请求数据对象RDO的情况下,调用第二函数和第三函数处理RDO;在解析出PD消息数据包括数据角色转化的请求结果的情况下,调用第四函数处理数据角色转化的请求结果;在解析出PD消息数据包括电源角色转化的请求结果的情况下,调用第五函数处理电源角色转化的请求结果。
可选地,处理模块46还用于在初始化时创建数据获取线程、创建定时器以及注册定时器回调函数;在定时器计时到达预设时长后,检测是否获取到PD消息数据;若未获取到PD消息数据,通过定时器回调函数激活数据获取线程;通过数据获取线程获取PD消息数据。
可选地,处理模块46用于执行以下步骤通过数据获取线程获取PD消息数据:在当前的电源角色是电源提供方的情况下,发送第一消息至独立运行芯片,接收独立运行芯片返回的RDO;在当前的电源角色是电源消耗方的情况下,发送第二消息至独立运行芯片,接收独立运行芯片返回的对端供电能力;其中,PD消息数据包括RDO和对端供电能力。
可选地,处理模块46还用于当有多个端口同时充电时,根据每个端口的供电能力和RDO计算每个端口的充电功率;若每个端口的充电功率相同,选取端口号最小的端口进行充电;若每个端口的充电功率不相同,选取充电功率最大的端口进行充电。
可选地,状态信息还包括以下至少之一:配置通道的状态、数据角色是否发生变化、电源角色是否发生变化,其中,配置通道的状态用于指示通用串行总线类型C接口USBType-C上所插入的对象的类型,电源角色包括电源提供方和电源消耗方。
根据本发明实施例,提供了一种存储介质,存储介质包括存储的程序,其中,程序执行具有上述任意特征的基于独立运行模式的数据处理方法。
根据本发明实施例,提供了一种处理器,其特征在于,处理器用于运行程序,其中,程序运行时执行具有上述任意特征的基于独立运行模式的数据处理方法。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (14)

1.一种基于独立运行模式的数据处理方法,其特征在于,包括:
接收来自独立运行芯片的中断事件;
根据所述中断事件,检测所述独立运行芯片的状态信息,其中,所述状态信息包括所述独立运行芯片是否存储有功率输出PD消息数据;
在所述独立运行芯片存储有所述PD消息数据的情况下,获取所述PD消息数据;
解析并处理所述PD消息数据;
通过类扩展接口将处理后的所述PD消息数据上传至操作系统;
其中,所述状态信息还包括以下至少之一:
配置通道的状态、数据角色是否发生变化、电源角色是否发生变化,其中,所述配置通道的状态用于指示通用串行总线类型C接口USB Type-C上所插入的对象的类型,所述电源角色包括电源提供方和电源消耗方;
其中,所述解析并处理所述PD消息数据包括:
在解析出所述PD消息数据包括供电能力的情况下,调用第一函数处理所述供电能力;
在解析出所述PD消息数据包括请求数据对象RDO的情况下,调用第二函数和第三函数处理所述RDO;
在解析出所述PD消息数据包括数据角色转化的请求结果的情况下,调用第四函数处理所述数据角色转化的请求结果;
在解析出所述PD消息数据包括电源角色转化的请求结果的情况下,调用第五函数处理所述电源角色转化的请求结果。
2.根据权利要求1所述的方法,其特征在于,获取所述PD消息数据包括:
从所述独立运行芯片的第一数据寄存器中读取所述PD消息数据,其中,所述第一数据寄存器的数据格式包括数据头、数据内容及校验值,所述数据头包括所述数据内容的字节数、所述校验值的字节数及所述数据内容的类型。
3.根据权利要求2所述的方法,其特征在于,所述独立运行芯片包括三级缓存,其中,第一级缓存包括所述第一数据寄存器,第二级缓存和第三级缓存均包括至少一个静态栈数组,所述独立运行芯片需向所述第三级缓存写入新数据时,所述第三级缓存中存储的原数据传输至所述第二级缓存中,所述第二级缓存中存储的原数据传输至所述第一数据寄存器中。
4.根据权利要求1所述的方法,其特征在于,所述获取所述PD消息数据之后,根据所述PD消息数据的类型处理所述PD消息数据之前,还包括:
通过中断处理线程将所述PD消息数据存储在数据缓存中;
激活PD消息处理线程,并通过所述PD消息处理线程从所述数据缓存中读取所述PD消息。
5.根据权利要求4所述的方法,其特征在于,所述数据缓存包括九级缓存,每一级缓存包括一个连续的静态数据,所述九级缓存为循环队列。
6.根据权利要求1所述的方法,其特征在于,还包括:
在初始化时创建数据获取线程、创建定时器以及注册定时器回调函数;
在所述定时器计时到达预设时长后,检测是否获取到所述PD消息数据;
若未获取到所述PD消息数据,通过所述定时器回调函数激活所述数据获取线程;
通过所述数据获取线程获取所述PD消息数据。
7.根据权利要求6所述的方法,其特征在于,通过所述数据获取线程获取所述PD消息数据,包括:
在当前的电源角色是电源提供方的情况下,发送第一消息至所述独立运行芯片,接收所述独立运行芯片返回的RDO;
在当前的电源角色是电源消耗方的情况下,发送第二消息至所述独立运行芯片,接收所述独立运行芯片返回的对端供电能力;
其中,所述PD消息数据包括所述RDO和所述对端供电能力。
8.根据权利要求1所述的方法,其特征在于,所述基于独立运行模式的数据处理方法应用于客户端驱动,所述客户端驱动支持多个端口。
9.根据权利要求1所述的方法,其特征在于,还包括:
当有多个端口同时充电时,根据每个端口的供电能力和RDO计算每个端口的充电功率;
若每个端口的充电功率相同,选取端口号最小的端口进行充电;
若每个端口的充电功率不相同,选取充电功率最大的端口进行充电。
10.一种客户端,其特征在于,包括:
接收模块,用于接收来自独立运行芯片的中断事件;
检测模块,用于根据所述中断事件,检测所述独立运行芯片的状态信息,其中,所述状态信息包括所述独立运行芯片是否存储有功率输出PD消息数据;
获取模块,用于在所述独立运行芯片存储有所述PD消息数据的情况下,获取所述PD消息数据;
处理模块,用于解析并处理所述PD消息数据;
传输模块,用于通过类扩展接口将处理后的所述PD消息数据上传至操作系统;
其中,所述状态信息还包括以下至少之一:
配置通道的状态、数据角色是否发生变化、电源角色是否发生变化,其中,所述配置通道的状态用于指示通用串行总线类型C接口USB Type-C上所插入的对象的类型,所述电源角色包括电源提供方和电源消耗方;
其中,所述处理模块用于执行以下步骤解析并处理所述PD消息数据包括:
在解析出所述PD消息数据包括供电能力的情况下,调用第一函数处理所述供电能力;
在解析出所述PD消息数据包括请求数据对象RDO的情况下,调用第二函数和第三函数处理所述RDO;
在解析出所述PD消息数据包括数据角色转化的请求结果的情况下,调用第四函数处理所述数据角色转化的请求结果;
在解析出所述PD消息数据包括电源角色转化的请求结果的情况下,调用第五函数处理所述电源角色转化的请求结果。
11.根据权利要求10所述的客户端,其特征在于,所述获取模块用于执行以下步骤获取所述PD消息数据:
从所述独立运行芯片的第一数据寄存器中读取所述PD消息数据,其中,所述第一数据寄存器的数据格式包括数据头、数据内容及校验值,所述数据头包括所述数据内容的字节数、所述校验值的字节数及所述数据内容的类型。
12.根据权利要求10所述的客户端,其特征在于,还包括:
缓存模块,用于通过中断处理线程将所述PD消息数据存储在数据缓存中;激活PD消息处理线程,并通过所述PD消息处理线程从所述数据缓存中读取所述PD消息。
13.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,所述程序执行权利要求1至9中任意一项所述的基于独立运行模式的数据处理方法。
14.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1至9中任意一项所述的基于独立运行模式的数据处理方法。
CN201710666970.9A 2017-08-07 2017-08-07 基于独立运行模式的数据处理方法及客户端 Active CN107590049B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710666970.9A CN107590049B (zh) 2017-08-07 2017-08-07 基于独立运行模式的数据处理方法及客户端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710666970.9A CN107590049B (zh) 2017-08-07 2017-08-07 基于独立运行模式的数据处理方法及客户端

Publications (2)

Publication Number Publication Date
CN107590049A CN107590049A (zh) 2018-01-16
CN107590049B true CN107590049B (zh) 2021-05-04

Family

ID=61042051

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710666970.9A Active CN107590049B (zh) 2017-08-07 2017-08-07 基于独立运行模式的数据处理方法及客户端

Country Status (1)

Country Link
CN (1) CN107590049B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108958203A (zh) * 2018-07-27 2018-12-07 上海与德科技有限公司 应用于中控系统的控制方法、中控系统及车辆

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101876699A (zh) * 2009-04-30 2010-11-03 中国科学院空间科学与应用研究中心 一种星载微波辐射计的控制系统及其控制方法
CN106776427A (zh) * 2016-12-05 2017-05-31 硅谷数模半导体(北京)有限公司 通信方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100535877C (zh) * 2003-05-21 2009-09-02 姜慧雪 一种利用电话传输计算机数据文件的装置和方法
CN104220958B (zh) * 2012-02-29 2017-04-19 华硕科技(苏州)有限公司 计算机装置及其通用串行总线连接器的工作模式转换方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101876699A (zh) * 2009-04-30 2010-11-03 中国科学院空间科学与应用研究中心 一种星载微波辐射计的控制系统及其控制方法
CN106776427A (zh) * 2016-12-05 2017-05-31 硅谷数模半导体(北京)有限公司 通信方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于USB总线接口的控制系统设计;朱静;《中国优秀硕士学位论文全文数据库信息科技辑》;20121015(第10期);正文第7-17页 *

Also Published As

Publication number Publication date
CN107590049A (zh) 2018-01-16

Similar Documents

Publication Publication Date Title
US6067628A (en) Method to monitor universal serial bus hub overcurrent
US9877283B2 (en) Method and terminal for reporting sensor data and terminal
US8359486B2 (en) High speed input/output system and power saving control method thereof
CN102959502B (zh) 在系统中提供异步事件通知的方法
EP3029912B1 (en) Remote accessing method and corresponding system
US20140122753A1 (en) Electronic Device, Management Method Thereof, and Rack Serving System
KR20120087980A (ko) 다중 인터페이스 솔리드 스테이트 디스크, 및 다중 인터페이스 솔리드 스테이트 디스크의 처리 방법 및 시스템
CN102750238A (zh) 用于连接到主机的存储设备的优化的提示模型和用于存储设备的写优化方案
TW201227341A (en) Remote management systems and methods for servers, and computer program products thereof
US11010094B2 (en) Task management method and host for electronic storage device
US20140280960A1 (en) Methods and apparatus for dynamically allocating devices between multiple controllers
USRE45457E1 (en) Memory reuse for multiple endpoints in USB device
CN110175146B (zh) 硬盘信息获取方法和获取硬盘信息的装置
CN107590049B (zh) 基于独立运行模式的数据处理方法及客户端
CN103838746A (zh) 多cpu系统共享存储数据的方法及该系统
WO2009055346A1 (en) Signaling an interrupt request through daisy chained devices
CN107894883B (zh) 音频流传输方法和声卡音频转换电路
CN111131512B (zh) 设备信息的处理方法、装置、存储介质及处理器
CN102508810A (zh) 一种转接装置及转接方法
WO2012177877A2 (en) System and method for performing isochronous data buffering
US8972621B1 (en) Methods, systems, and physical computer-readable media for multiplexing a single end-point memory structure between USB interfaces
US20100031087A1 (en) Method of control in a system having a media reader
CN111159244B (zh) 数据查询方法及装置
EP3433751A1 (en) Connected devices information
CN100520756C (zh) 管理存储卡插入或拔出读卡器的方法和所述方法中使用的设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant