CN103077134A - 一种嵌入式系统中实现多管道数据传输的方法和装置 - Google Patents
一种嵌入式系统中实现多管道数据传输的方法和装置 Download PDFInfo
- Publication number
- CN103077134A CN103077134A CN2012105799647A CN201210579964A CN103077134A CN 103077134 A CN103077134 A CN 103077134A CN 2012105799647 A CN2012105799647 A CN 2012105799647A CN 201210579964 A CN201210579964 A CN 201210579964A CN 103077134 A CN103077134 A CN 103077134A
- Authority
- CN
- China
- Prior art keywords
- pipeline
- response
- parameter
- module
- configuration item
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 64
- 230000005540 biological transmission Effects 0.000 title claims abstract description 46
- 230000004044 response Effects 0.000 claims description 219
- 238000012217 deletion Methods 0.000 claims description 35
- 230000037430 deletion Effects 0.000 claims description 35
- 238000003860 storage Methods 0.000 claims description 12
- 230000000295 complement effect Effects 0.000 claims description 7
- 239000000872 buffer Substances 0.000 abstract description 35
- 239000000969 carrier Substances 0.000 abstract 1
- 230000007774 longterm Effects 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 13
- 238000007726 management method Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 8
- 230000003068 static effect Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 2
- 230000002950 deficient Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开一种嵌入式系统中实现多管道数据传输的方法和装置,通过在主机网络中的实体之间创建动态通道,实现多管道数据传输,并为每个管道设置对应的传输缓冲区,从而避免各管道之间可能出现交叉的情况,减少了实体之间的数据传输错误,提高了数据传输的可靠性;由于动态管道可被动态地创建和删除,避免了对管理资源的长期占用,节省了主机的资源;此外,本发明提供的技术方案还并能够实现集中式控制,支持网络拓扑结构,设施简单,部署方便,支持底层的多种数据载体,适用于多种应用场景,错误处理能力强,可兼容多种硬件平台。
Description
技术领域
本发明涉及通信技术领域,特别涉及一种嵌入式系统中实现多管道数据传输的方法和装置。
背景技术
近几年,随着智能卡在金融、商业、交通等行业中的应用推广,需要在智能卡上实现和支持的应用越来越多。智能卡不仅具有数据存储功能,同时具有命令处理和数据安全保护等功能。卡内部数据和密钥受到内置的智能卡操作系统的保护,外部不可能越过COS的控制直接对卡内的数据或密钥进行操作。智能卡可以使用接触或非接触式接口与外部系统进行通讯,被广泛应用于金融、电信、交通、身份认证等对安全要求较高的领域。多应用智能卡与单应用智能卡相比,更便于用户携带、使用和管理。
发明人在实现本发明的过程中,发现现有技术至少存在以下缺陷:
由于多应用集成往往需要平台具备更大的数据存储空间和更强的数据处理能力,而智能卡作为一种移动安全设备,其存储空间和数据处理能力都是有限的。特别是在使用智能卡同时支持多个复杂的应用,而应用又具有复杂逻辑时,对空间和时间响应的要求更高,现有的单管道传输机制已无法对智能卡进行方便地处理。
发明内容
本发明提供了一种嵌入式系统中实现多管道数据传输的方法和装置,用于解决现有技术中单管道数据传输的缺陷。
本发明提供了一种嵌入式系统中实现多管道数据传输的方法,包括以下步骤:
A1、等待接收数据包;
A2、根据接收到的数据包生成消息,对所述消息进行判断,并根据所述数据包所包含的管道ID,从自身存储的上下文中检索所述管道的信息;
如果没有从所述上下文中检索到所述管道的信息,则发送用于表示管道不存在的响应,并返回步骤A1;
如果从所述上下文中检索到所述管道的状态信息为关闭状态,且所述消息不是打开管道命令,则发送用于表示管道未打开的响应,并返回步骤A1;如果从所述上下文中检索到所述管道的状态信息为关闭状态,且所述消息为打开管道命令,则执行步骤A4;
如果从所述上下文中检索到所述管道的状态信息为打开状态,且所述消息为管道创建通知时,则执行步骤A3;如果从所述上下文中检索到所述管道的状态信息为打开状态,且所述消息为管道管理命令时,则执行步骤A7;如果从所述上下文中检索到所述管道的状态信息为打开状态,且所述消息为配置项管理命令时,则执行步骤A8;如果从所述上下文中检索到所述管道的状态信息为打开状态,且所述消息为其他命令时,则执行步骤A13;
如果从所述上下文中检索到所述管道的状态信息为打开状态,且所述消息为事件时,则执行步骤A14;如果从所述上下文中检索到所述管道的状态信息为打开状态,且所述消息为响应时,则执行步骤A15;
A3、将所述管道创建通知中的管道信息保存到所述上下文中,通过所述管道发送用于表示命令执行成功的响应,并返回步骤A1;
A4、判断所述打开管道命令是否包含参数,如果是,则执行步骤A5;否则,执行步骤A6;
A5、通过所述管道发送用于表示命令被拒绝的响应,并返回步骤A1;
A6、根据与所述管道连接的端口的ID,检索所述上下文,获取所述端口上处于打开状态的管道的数量,将所述上下文中存储的所述管道的状态信息设置为打开状态,通过所述管道发送用于表示命令执行成功的响应,并返回步骤A1,所述响应包含获取的处于打开状态的管道的数量;
A7、对所述上下文中存储的所述管道的信息进行处理,通过所述管道发送与处理结果对应的响应,并返回步骤A1;
A8、判断所述配置项管理命令是否包含参数,如果是,则执行步骤A10;否则,执行步骤A9;
A9、通过所述管道发送用于表示命令格式错误的响应,并返回步骤A1;
A10、根据所述配置项管理命令中的参数,检索对应的配置项参数,判断是否检索到配置项参数,如果是,则执行步骤A12;否则,执行步骤A11;
A11、通过所述管道发送用于表示配置项参数不可识别的响应,并返回步骤A1;
A12、对检索到的配置项参数进行处理,通过所述管道发送与处理结果对应的响应,并返回步骤A1;
A13、根据所述命令进行相应的处理,通过所述管道发送与处理结果对应的响应,并返回步骤A1;
A14、处理所述事件,通过所述管道发送与处理结果对应的响应,并返回步骤A1;
A15、处理所述响应,并返回步骤A1。
本发明还提供了一种嵌入式系统中实现多管道数据传输的装置,包括:
接收模块,用于接收数据包;
生成模块,用于根据所述接收模块接收到的数据包生成消息;
第一判断模块,用于对所述消息进行判断;
存储模块,用于存储上下文;
第一检索模块,用于根据所述接收模块接收到的数据包所包含的管道ID,从所述存储模块存储的上下文中检索所述管道的信息;
第一处理模块,用于在所述第一检索模块从所述上下文中检索到所述管道的状态信息为打开状态,且所述第一判断模块判断所述消息为管道创建通知时,将所述管道创建通知中的管道信息保存到所述上下文中,触发发送模块;
第二判断模块,用于在所述第一检索模块从所述上下文中检索到所述管道的状态信息为关闭状态,且所述第一判断模块判断所述消息为打开管道命令时,判断所述打开管道命令是否包含参数;
第二处理模块,用于在所述第二判断模块判断所述打开管道命令不包含参数时,根据与所述管道连接的端口的ID,检索所述上下文,获取所述端口上处于打开状态的管道的数量,将所述上下文中存储的所述管道的状态信息设置为打开状态,并触发发送模块;
第三处理模块,用于在所述第一检索模块从所述上下文中检索到所述管道的状态信息为打开状态,且所述第一判断模块判断所述消息为管道管理命令时,对所述上下文中存储的所述管道的信息进行处理,并触发发送模块;
第三判断模块,用于在所述第一检索模块从所述上下文中检索到所述管道的状态信息为打开状态,且所述第一判断模块判断所述消息为配置项管理命令时,判断所述配置项管理命令是否包含参数;
第二检索模块,用于在所述第三判断模块判断所述配置项管理命令包含参数时,根据所述配置项管理命令中的参数,检索对应的配置项参数;
第四处理模块,用于在所述第二检索模块检索到配置项参数时,对检索到的配置项参数进行处理,并触发发送模块;
第五处理模块,用于在所述第一检索模块从所述上下文中检索到所述管道的状态信息为打开状态,且所述第一判断模块判断所述消息为事件时,处理所述事件,并触发发送模块;
第六处理模块,用于在所述第一检索模块从所述上下文中检索到所述管道的状态信息为打开状态,且所述第一判断模块判断所述消息为响应时,处理所述响应;
发送模块,用于在所述第一检索模块没有从所述上下文中检索到所述管道的信息时,发送用于表示管道不存在的响应;在接收到所述第一处理模块的触发时,通过所述管道发送用于表示命令执行成功的响应;在所述第二判断模块判断所述打开管道命令包含参数时,通过所述管道发送用于表示命令被拒绝的响应;在接收到所述第二处理模块的触发时,通过所述管道发送用于表示命令执行成功的响应,所述响应包含获取的处于打开状态的管道的数量;在所述第三判断模块判断所述配置项管理命令不包含参数时,通过所述管道发送用于表示命令格式错误的响应;在所述第二检索模块未检索到配置项参数时,通过所述管道发送用于表示配置项参数不可识别的响应;在接收到所述第三处理模块的触发时,通过所述管道发送与所述第三处理模块的处理结果对应的响应;在接收到所述第四处理模块的触发时,通过所述管道发送与所述第四处理模块的处理结果对应的响应;在接收到所述第五处理模块的触发时,通过所述管道发送与所述第五处理模块的处理结果对应的响应。
本发明提供的技术方案中,通过在主机网络中的实体之间创建动态通道,实现多管道数据传输,并为每个管道设置对应的传输缓冲区,从而避免各管道之间可能出现交叉的情况,减少了实体之间的数据传输错误,提高了数据传输的可靠性;由于动态管道可被动态地创建和删除,避免了对管理资源的长期占用,节省了主机的资源;此外,本发明提供的技术方案还并能够实现集中式控制,支持网络拓扑结构,设施简单,部署方便,支持底层的多种数据载体,适用于多种应用场景,错误处理能力强,可兼容多种硬件平台。
附图说明
图1为本发明实施例中的一种嵌入式系统中实现多管道数据传输的方法流程图;
图2为本发明实施例中的一种根据待发送消息生成数据包的方法流程图;
图3为本发明实施例中的一种根据数据包生成消息的方法流程图;
图4为本发明实施例中的一种执行创建管道命令的方法流程图;
图5为本发明实施例中的主机控制器执行打开管道命令的方法流程图;
图6为本发明实施例中的主机执行打开管道命令的方法流程图;
图7为本发明实施例中的一种执行关闭管道命令的方法流程图;
图8为本发明实施例中的一种执行删除管道命令的方法流程图;
图9为本发明实施例中的一种执行更新配置项参数命令的方法流程图;
图10为本发明实施例中的一种执行获取配置项参数命令的方法流程图;
图11为本发明实施例中的一种嵌入式系统中实现多管道数据传输的装置结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例的技术方案应用于嵌入式系统中的主机网络,该主机网络包含一个主机控制器以及与该主机控制器连接的一个或多个主机,其中,主机控制器用于管理自身所在的主机网络,主机用于执行一种或多种服务,主机可以是智能卡,也可以是其他类型的实体。主机和主机控制器均可包含一个或多个端口,主机上的端口为主机的服务提供接入点。
由两个分别位于同一主机网络中的不同实体上的端口构成的通道称为管道,主机通过管道与主机网络中的其他主机和主机控制器交互信息,管道按类型可以分为静态管道和动态管道,静态管道长期有效,无需创建也不能删除;动态管道需要创建,可被删除。每个管道对应一个传输缓冲区,该传输缓冲区用于存储需要发送的消息,其大小取决于对应的管道所连接的端口的类型。主机网络中传输的消息的类型包括命令、事件和响应,其中,响应的类型和含义如下表所示:
表1 响应的类型和含义的对应表
响应的类型 | 响应的含义 |
第一响应 | 表示管道未打开 |
第二响应 | 表示命令不支持 |
第三响应 | 表示命令被拒绝 |
第四响应 | 表示创建管道失败 |
第五响应 | 表示命令执行成功 |
第六响应 | 表示命令格式错误 |
第七响应 | 表示配置项参数不可识别 |
第八响应 | 表示写入权限错误 |
基于上述主机系统,本发明实施例提供了一种嵌入式系统中实现多管道数据传输的方法,如图1所示,包括以下步骤:
步骤101,等待接收数据包。
步骤102,根据接收到的数据包生成消息。
具体地,可以对接收到的数据包中的CB(链接指示位)的取值进行判断,当CB的取值为第一预设值时,则确定该数据包不是当前发送的数据包序列中的最后一个数据包,并继续接收数据包;当CB的取值为第二预设值时,则确定接收到的数据包是当前发送的数据包序列中的最后一个数据包,提取接收到的一个或者多个数据包中的有效数据,将提取到的有效数据组合成消息。
例如,接收到的数据包序列包括两个数据包,即,0450 00A404 0008和84 A00000000300,第一个数据包包括1字节的包头、1字节的消息头和5字节的有效数据,第二个数据包包括1字节的包头和6字节的有效数据。第一个数据包的包头为04,即,0000 0100,其中,CB的取值为0,表示该数据包不是当前发送的数据包序列中的最后一个数据包;第二个数据包的包头为84,即,1000 0100,其中,CB的取值为1,表示该数据包是当前发送的数据包序列中的最后一个数据包。上述两个数据包中,管道 ID为00000100,即,04,表示接收到的所有数据包均是通过管道 ID为04的管道传输的。
第一个数据包中的消息头包括2比特的类型位和6比特的指示位。在本示例中,消息头为50,即,0101 0000,type位的取值为01,表示该消息的类型为事件;instruction位为01 0000,表示该消息为卡模拟状态下的发送数据事件。第一个数据包中的有效数据为00A404 0008,第二个数据包中的有效数据为A00000000300。通过对第一个数据包中的消息头、有效数据,以及第二个数据包中的有效数据进行组装,可得到消息50 00A404 0008 A00000000300。综合以上内容可知,根据接收到的数据包生成的消息为卡模拟状态下有效载荷为00A4040008 A00000000300的发送数据事件。
步骤103,根据接收到的数据包所包含的管道ID,从自身存储的上下文中检索相应的管道的信息。
其中,管道的信息包括管道ID、源主机ID、源端口ID、目标主机ID、目标端口ID和管道的状态信息。
步骤104,判断是否检索到相应的管道的信息,如果是,则执行步骤105;否则,发送用于表示管道不存在的响应,并返回步骤101。
步骤105,判断检索到的管道的状态信息是否为打开状态,如果是,则执行步骤108;否则,执行步骤106。
步骤106,判断生成的消息是否为打开管道命令,如果是,则执行步骤109;否则,执行步骤107。
步骤107,发送第一响应,并返回步骤101。
步骤108,对生成的消息的类型进行判断,如果该消息为命令,则执行步骤109;如果该消息为响应,则执行步骤114;如果该消息为事件,则执行步骤112。
具体地,可以判断生成的消息所包含的消息头中的类型位的取值是否为第五预设值,如果为第五预设值,则确定该消息为命令。本发明实施例中,第五预设值可以为0。
具体地,可以判断生成的消息所包含的消息头中的类型位的取值是否为第六预设值,如果为第六预设值,则确定该消息为响应。本发明实施例中,第六预设值可以为2。
具体地,可以判断生成的消息所包含的消息头中的类型位的取值是否为第三预设值,如果为第三预设值,则确定该消息为事件。本发明实施例中,第三预设值可以为1。
步骤109,判断与接收到的数据包对应的管道所连接的端口是否支持生成的命令,如果支持,则执行步骤110;否则,执行步骤111;
具体地,可以根据接收到的数据包所包含的管道 ID确定与该数据包对应的管道,进而确定与该管道相连接的端口。由于每个端口对应一个由指令编码和函数组成的结构体,可以通过与确定出的端口对应的指令编码确定与该指令编码位于同一结构体的函数,根据确定出的函数判断上述端口是否支持生成的命令。
步骤110,执行生成的命令,发送相应的响应,并返回步骤101。
具体地,可以生成与生成的命令对应的响应,并将该响应存储到与接收到的数据包对应的传输缓冲区中,通过该传输缓冲区对应的管道,发送该响应。
步骤111,发送第二响应,并返回步骤101。
优选地,还可以将生成的第二响应存储到与接收到的数据包对应的传输缓冲区中,通过该传输缓冲区对应的管道,发送第二响应,其中,第二响应用于表示命令不支持。
步骤112,判断与接收到的数据包对应的管道所连接的端口是否支持生成的事件,如果是,则执行步骤113;否则,返回步骤101。
具体地,可以根据接收到的数据包所包含的管道 ID确定与该数据包对应的管道,进而确定与该管道相连接的端口。由于每个端口对应一个由指令编码和函数组成的结构体,可以通过与确定出的端口对应的指令编码确定与该指令编码位于同一结构体的函数,根据确定出的函数判断上述端口是否支持生成的事件。
步骤113,处理生成的事件,发送相应的响应,并返回步骤101。
具体地,可以生成与生成的事件对应的响应,将该响应存储到相应的传输缓冲区中,通过该传输缓冲区对应的管道,发送该响应。
步骤114,判断生成的响应是否与自身最近一次发送的命令相匹配,如果是,则执行步骤115;否则,返回步骤101。
步骤115,判断生成的响应是否为第三响应,如果是,则返回步骤101;否则,执行步骤116。
其中,第三响应用于表示命令被拒绝。
步骤116,处理生成的响应,并返回步骤101。
需要说明的是,主机和主机控制器发送消息时,可以判断自身包含的所有传输缓冲区中是否均为空,如果所有传输缓冲区均为空,则确定自身不需要发送消息;如果有一个或多个传输缓冲区不为空,则确定自身需要发送消息。
当确定自身需要发送消息时,根据待发送消息生成一个或多个数据包,并发送该数据包。具体地,可以根据待发送消息的长度和数据包的最大长度,根据待发送消息包生成一个或多个数据包,并通过待发送消息所在的传输缓冲区对应的管道,发送该数据包,该数据包的包头所包含的管道ID为待发送消息所在的传输缓冲区对应的管道的ID,生成数据包的具体过程可参见图2所示的流程图。
如果根据待发送消息生成一个数据包,该数据包可以包括包头和消息头,还可进一步包括有效数据;如果根据待发送消息生成多个数据包,则第一个发送的数据包可以包括包头和消息头,还可进一步包括有效数据,其他数据包包括包头和有效数据。
其中,包头包括CB(链接指示位)和管道 ID,其中,CB用于标识该数据包是否为当前发送的数据包序列中的最后一个数据包,管道ID用于标识发送该数据包的管道。当CB的取值为第一预设值时,表示该数据包不是当前发送的数据包序列中的最后一个数据包;当CB的取值为第二预设值时,表示该数据包是当前发送的数据包序列中的最后一个数据包。消息头包括类型位和指示位,其中,类型为用于指示消息的类型,指示位用于指示消息的名称。
主机和主机控制器可以根据预先设置的数据包的最大长度,根据待发送消息生成数据包,其中,数据包的最大长度取决于数据链路层。在连续发送的数据包序列中,第一个发送的数据包包括包头、消息头和有效数据,其他的数据包包括包头和有效数据。主机和主机控制器生成数据包的过程可细化为如图2所示的流程图,包括以下步骤:
步骤201,对已发送消息的长度进行初始化。
具体地,可以将已发送消息的长度设置为零。
步骤202,判断第一变量的取值是否大于第二变量的取值,如果大于,则执行步骤204;否则,执行步骤203。
其中,第一变量的取值为待发送消息的长度减去已发送消息的长度得到的结果,第二变量的取值为数据包的最大长度减去第一预设长度得到的结果,第一预设长度可以为数据包中的消息头的长度,例如,1字节。
步骤203,根据待发送消息所在的传输缓冲区的起始地址和已发送消息的长度,确定需要填充到数据包中的有效数据的起始地址,从确定出的起始地址开始,复制长度为第一变量的取值的数据,并根据复制出的数据生成包含消息头的数据包。
具体地,可以获取待发送消息所在的传输缓冲区的起始地址与已发送消息的长度相加得到的结果,将该结果作为需要填充到数据包中的有效数据的起始地址,从该起始地址开始,复制长度为第一变量的取值的数据,将复制出的数据作为数据包的有效数据,在该有效数据之前填充长度为第一预设长度的消息头,在该消息头之前填充CB的取值为第二预设值的包头,从而生成数据包。
步骤204,根据已发送消息的长度和待发送消息所在的传输缓冲区的起始地址,确定需要填充到数据包中的有效数据的起始地址,从确定出的起始地址开始,复制长度为第二变量的取值的数据,根据复制出的数据生成数据包,并更新已发送消息的长度。
具体地,可以获取待发送消息所在的传输缓冲区的起始地址与已发送消息的长度相加得到的结果,将该结果作为需要填充到数据包中的有效数据的起始地址,从该起始地址开始,复制长度为第二变量的取值的数据,将复制出的数据作为数据包的有效数据,在该有效数据之前填充长度为第一预设长度的消息头,在该消息头之前填充CB的取值为第一预设值的包头;还可以将已发送消息的长度增加从传输缓冲区复制的数据的长度,即,将已发送消息的长度增加第二变量的取值。
步骤205,判断第一变量的取值是否大于数据包的最大长度,如果大于,则执行步骤206;否则,执行步骤207。
步骤206,根据已发送消息的长度和待发送消息所在的传输缓冲区的起始地址,确定需要填充到数据包中的有效数据的起始地址,从确定出的起始地址开始,复制长度为数据包的最大长度的数据,根据复制出的数据生成数据包,更新已发送消息的长度,并返回步骤205。
具体地,可以获取待发送消息所在的传输缓冲区的起始地址与已发送消息的长度相加得到的结果,将该结果作为需要填充到数据包中的有效数据的起始地址,从该起始地址开始,复制长度为数据包的最大长度的数据,将复制出的数据作为数据包的有效数据,在该有效数据之前填充CB的取值为第一预设值的包头;还可以将已发送消息的长度增加从传输缓冲区复制的数据的长度,即,将已发送消息的长度增加数据包的最大长度。
步骤207,根据已发送消息的长度和待发送消息所在的传输缓冲区的起始地址,确定需要填充到数据包中的有效数据的起始地址,从确定出的起始地址开始,复制长度为第一变量的取值的数据,并根据复制出的数据生成不包含消息头的数据包。
具体地,可以获取待发送消息所在的传输缓冲区的起始地址与已发送消息的长度相加得到的结果,将该结果作为需要填充到数据包中的有效数据的起始地址,从该起始地址开始,复制长度为第一变量的取值的数据,将复制出的数据作为数据包的有效数据,在该有效数据之前填充CB的取值为第二预设值的包头,从而生成数据包。
上述如图1所示的实施例中,主机和主机控制器可以等待接收数据包,并从根据接收到的数据包生成消息,其过程可细化为如图3所示的流程图,包括以下步骤:
步骤301,对已接收的数据的长度进行初始化。
具体地,可以将已接收的数据的长度设置为零。
步骤302,等待接收数据包。
步骤303,根据接收到的数据包所包含的管道ID,确定传输该数据包的管道对应的传输缓冲区,获取该传输缓冲区的起始地址与已接收的数据的长度相加得到的结果,以该结果作为起始地址,将接收到的数据包中除包头之外的其他数据复制到传输缓冲区中,并更新已接收的数据的长度。
具体地,可以将接收到的数据包中除包头之外的其他数据,复制到传输缓冲区中,并将已接收的数据的长度增加接收到的数据包中除包头之外的其他数据的长度。
步骤304,对接收到的数据包中的CB的取值进行判断,如果CB的取值为第一预设值,则返回步骤302,如果CB的取值为第二预设值,则结束流程。
需要说明的是,上述实施例的流程结束后,传输缓冲区中存储的数据,即为从接收到的数据包中获取的消息。
另外,在本发明的其他实施例中,主机(或主机控制器)接收到数据包后,也可以先对该数据包中的CB的取值进行判断,如果CB的取值为第一预设值,则将该数据包中除包头之外的其他数据复制到传输缓冲区中,更新已接收的数据的长度(即,执行步骤303),并继续等待接收数据包(即,返回步骤302);如果CB的取值为第二预设值,则将该数据包中除包头之外的其他数据,复制到传输缓冲区中,将传输缓冲区中的数据作为根据接收到的数据包生成的消息,并不再等待接收数据包。上述实施方式同样可以实现本发明的发明目的。
上述如图1所示的实施例中,基于命令的类型的不同,主机和主机控制器执行命令的流程也不相同。在主机网络中,源主机向主机控制器发送创建管道命令,请求与目标主机之间建立管道。其中,创建管道命令中可以包含源端口ID、目标主机ID和目标端口ID。主机控制器接收到来自源主机的创建管道命令后,执行该创建管道命令的流程,如图4所示,包括以下步骤:
步骤401,主机控制器判断目标主机对应的主机ID列表中是否包含源主机的主机ID,如果包含,则执行步骤403;否则,执行步骤402。
步骤402,主机控制器向源主机返回第四响应。
其中,第四响应用于表示创建管道失败。
步骤403,主机控制器分配一个未被使用的管道ID。
步骤404,主机控制器判断自身是否为目标主机,如果是,则执行步骤405;否则执行步骤407。
具体地,主机控制器可以判断创建管道命令中的目标主机ID是否与自身的主机ID相同,如果相同,则确定自身为目标主机;否则,确定自身不是目标主机。
步骤405,主机控制器保存管道信息,向源主机返回包含该管道信息的第五响应。
具体地,主机控制器将管道信息保存到上下文中,并向源主机返回包含该管道信息的第五响应。其中,管道信息包含源主机的主机ID、主机控制器分配的管道ID,以及主机控制器接收到的创建管道命令中包含的源端口ID、目标主机ID和目标端口ID。第五响应用于表示命令执行成功,其包含的管道信息包括源主机ID、源端口ID、目标主机ID、目标端口ID和管道ID。
步骤406,源主机保存管道信息。
具体地,源主机将接收到的第五响应中的管道信息保存到自身的上下文中。
步骤407,主机控制器根据接收到的创建管道命令中包含的目标主机ID,向对应的目标主机发送管道创建通知。
其中,管道创建通知中可以包含源主机ID、源端口ID、目标主机ID、目标端口ID和管道ID。
步骤408,目标主机获取自身已创建的动态管道的数量。
具体地,目标主机可以查询自身存储的上下文,根据上下文中的管道信息,获取自身已创建的动态管道的数量。
步骤409,目标主机判断自身已创建的动态管道的数量是否小于预设的最大管道数,如果是,则执行步骤410;否则,执行步骤414。
其中,最大管道数可以为目标主机进入主机网络时设置的参数,可以保持在目标主机的上下文中。
步骤410,目标主机判断管道创建通知中包含的源端口ID的取值是否在预设范围内,如果是,则执行步骤411;否则,执行步骤414。
其中,预设范围可以与目标主机的服务类型相对应。
步骤411,目标主机保存管道信息,并向主机控制器返回第五响应。
具体地,目标主机可以将管道信息保存到自身的上下文中,并向主机控制器返回第五响应。其中,管道信息为目标主机接收到的管道创建通知所包含的源主机ID、源端口ID、目标主机ID、目标端口ID和管道ID,第五响应用于表示命令执行成功。
步骤412,主机控制器保存管道信息,并向源主机返回包含该管道信息的第五响应。
具体地,主机控制器可以将管道信息保存到自身的上下文中,并向源主机返回包含参数的第五响应。其中,管道信息为主机控制器向目标主机发送的管道创建通知中所包含的源主机ID、源端口ID、目标主机ID、目标端口ID和管道ID,第五响应用于表示命令执行成功,可以包含源主机ID、源端口ID、目标主机ID、目标端口ID和管道ID。
步骤413,源主机保存管道信息。
具体地,源主机可以将管道信息保存到自身的上下文中,该管道信息为源主机接收到第五响应中所包含的参数,即,源主机ID、源端口ID、目标主机ID、目标端口ID和管道ID。
步骤414,目标主机向主机控制器返回第四响应。
其中,第四响应用于表示创建管道失败。
步骤415,主机控制器向源主机返回第四响应。
其中,第四响应用于表示创建管道失败。
需要说明的是,在本发明的其他实施方式中,主机控制器接收到来自源主机的创建管道命令后,还可以获取目标主机上已创建的动态管道的数量,并判断该数量是否小于与目标主机对应的最大管道数,如果小于,则向目标主机发送管道创建通知;否则,向源主机返回第四响应。上述流程同样可以实现本发明的发明目的。
当生成的命令为打开管道命令时,主机控制器执行该命令的流程,如图5所示,包括以下步骤:
步骤501,主机控制器判断打开管道命令中是否包含参数;如果是,则执行步骤502;否则,执行步骤503。
步骤502,主机控制器返回第三响应。
其中,第三响应用于表示命令被拒绝。
步骤503,主机控制器将与打开管道命令对应的管道的状态信息设置为打开状态,并返回第五响应。
具体地,主机控制器可以获取承载打开管道命令的数据包中的包头所包含的管道ID,将该管道ID对应的管道作为与打开管道命令对应的管道,并根据该管道ID查询自身存储的上下文,将上下文中包含的该管道的状态信息设置为打开状态,返回第五响应。其中,第五响应用于表示命令执行成功。
主机执行打开管道命令的流程,如图6所示,包括以下步骤:
步骤601,主机判断打开管道命令中是否包含参数;如果是,则执行步骤602;否则,执行步骤603。
步骤602,主机返回第三响应。
其中,第三响应用于表示命令被拒绝。
步骤603,主机获取与打开管道命令对应的端口上已打开的管道数量,将与打开管道命令对应的管道的状态信息设置为打开状态,并返回包含上述获取的管道数量的第五响应。
具体地,主机可以获取承载打开管道命令的数据包中的包头所包含的管道ID,将该管道ID对应的管道作为与打开管道命令对应的管道,将主机上与该管道连接的端口作为与打开管道命令对应的端口,并从自身存储的上下文中,获取该端口上已打开的管道数量。
主机可以获取承载打开管道命令的数据包中的包头所包含的管道ID,将该管道ID对应的管道作为与打开管道命令对应的管道,并根据该管道ID查询自身存储的上下文,将该上下文中包含的该管道的状态信息设置为打开状态,返回第五响应。其中,第五响应用于表示命令执行成功,可以包含主机获取的与打开管道命令对应的端口上已打开的管道数量,即,在执行打开管道命令之前该端口上已打开的管道数量。
主机和主机控制器执行关闭管道命令的流程,如图7所示,包括以下步骤:
步骤701,判断关闭管道命令中是否包含参数;如果是,则执行步骤702;否则,执行步骤703。
步骤702,返回第三响应。
其中,第三响应用于表示命令被拒绝。
步骤703,判断与关闭管道命令对应的管道是否处于打开状态;如果是,则执行步骤704;否则,执行步骤702。
具体地,可以根据承载关闭管道命令的数据包中的包头所包含的管道ID,确定传输关闭管道命令的管道,将确定出的管道作为与关闭管道命令对应的管道,并判断该管道是否处于打开状态。
步骤704,将与关闭管道命令对应的管道的状态信息设置为关闭状态,并返回第五响应。
具体地,可以获取承载关闭管道命令的数据包中的包头所包含的管道ID,将该管道ID对应的管道作为与关闭管道命令对应的管道,并根据该管道ID查询自身存储的上下文,将该上下文中包含的该管道的状态信息设置为关闭状态,返回第五响应。其中,第五响应用于表示命令执行成功。
在主机网络中,源主机可以向主机控制器发送删除管道命令,请求删除与目标主机之间的管道;目标主机也可以向主机控制器发送删除管道命令,请求删除与源主机之间的管道。其中,删除管道命令包含管道ID,主机控制器执行删除管道命令的流程,如图8所示,该流程中,向主机控制器发送删除管道命令的主机为第一主机,第一主机请求删除与第二主机之间的管道,上述流程包括以下步骤:
步骤801,主机控制器判断与删除管道命令对应的管道是否为静态管道,如果是,则执行步骤802;否则,执行步骤803。
具体地,主机控制器可以将删除管道命令包含的管道ID对应的管道,确定为与删除管道命令对应的管道,并判断该管道是否为静态管道。
步骤802,主机控制器向第一主机返回第三响应。
其中,第三响应用于表示命令被拒绝。
步骤803,主机控制器判断与删除管道命令对应的管道是否为自身与第一主机之间的管道,如果是,则执行步骤804;否则,执行步骤806。
具体地,主机控制器可以根据承载删除管道命令的数据包中的包头所包含的管道ID,查询自身存储的上下文,将上下文中包含该管道ID的管道信息作为与删除管道命令对应的管道信息,并判断该管道信息中是否包含自身的主机ID,如果包含,则确定与删除管道命令对应的管道为自身与第一主机之间的管道;否则,确定与删除管道命令对应的管道不是自身与第一主机之间的管道。
步骤804,主机控制器将与删除管道命令对应的管道信息删除,并向第一主机返回第五响应。
具体地,主机控制器可以根据承载删除管道命令的数据包中的包头所包含的管道ID,查询自身存储的上下文,将上下文中包含该管道ID的管道信息作为与删除管道命令对应的管道信息,并将该管道信息删除,向第一主机返回第五响应。其中,第五响应用于表示命令执行成功。
步骤805,第一主机将与删除管道命令对应的管道信息删除。
具体地,第一主机可以根据承载删除管道命令的数据包中的包头所包含的管道ID,查询自身存储的上下文,将上下文中包含该管道ID的管道信息作为与删除管道命令对应的管道信息,并将该管道信息删除。
步骤806,主机控制器确定通过与删除管道命令对应的管道与第一主机相连接的第二主机,向第二主机发送管道删除通知。
具体地,主机控制器根据承载删除管道命令的数据包中的包头所包含的管道ID,查询自身存储的上下文,获取上下文中包含该管道ID的管道信息,将该管道信息中除第一主机的主机ID之外的其他主机的ID对应的主机作为第二主机,并向第二主机发送管道删除通知。其中,管道删除通知中可以包含承载删除管道命令的数据包中的包头所包含的管道ID。
步骤807,第二主机将与管道删除通知对应的管道信息删除,向主机控制器返回第五响应。
具体地,第二主机可以根据管道删除通知中包含的管道ID,查询自身存储的上下文,将上下文中包含该管道ID的管道信息作为与管道删除通知对应的管道信息,并将该管道信息删除,向主机控制器返回第五响应。其中,第五响应用于表示命令执行成功。
步骤808,主机控制器将与删除管道命令对应的管道信息删除,并向第一主机返回第五响应。
具体地,主机控制器可以根据承载删除管道命令的数据包中的包头所包含的管道ID,查询自身存储的上下文,将上下文中包含该管道ID的管道信息作为与删除管道命令对应的管道信息,并将该管道信息删除,向第一主机返回第五响应。其中,第五响应用于表示命令执行成功。
步骤809,第一主机将与删除管道命令对应的管道信息删除。
具体地,第一主机可以根据承载删除管道命令的数据包中的包头所包含的管道ID,查询自身存储的上下文,将上下文中包含该管道ID的管道信息作为与删除管道命令对应的管道信息,并将该管道信息删除。
主机和主机控制器执行更新配置项参数命令的流程如图9所示,包括以下步骤:
步骤901,判断更新配置项参数命令的长度是否为第二预设长度,如果是,则执行步骤903;否则,返回步骤902。
步骤902,返回第六响应。
其中,第六响应用于表示命令格式错误。
步骤903,判断更新配置项参数命令中是否包含参数索引;如果是,则执行步骤904;否则,执行步骤902。
步骤904,根据更新配置项参数命令包含的参数索引,检索对应的配置项参数。
步骤905,判断是否检索到配置项参数,如果是,则执行步骤907;否则,执行步骤906。
步骤906,返回第七响应。
其中,第七响应用于表示配置项参数不可识别。
步骤907,判断检索到的配置项参数是否可写,如果是,则执行步骤909;否则,执行步骤908。
步骤908,返回第八响应。
其中,第八响应用于表示写入权限错误。
步骤909,使用更新配置项参数命令中的参数值,对检索到的配置项参数进行更新,并返回第五响应。
具体地,可以将检索到的配置项参数赋值为更新配置项参数命令中的参数值,并返回第五响应。其中,第五响应用于表示命令执行成功。
主机和主机控制器执行获取配置项参数命令的流程如图10所示,包括以下步骤:
步骤1001,判断获取配置项参数命令中是否包含参数;如果是,则执行步骤1003;如果不是,则执行步骤1002。
步骤1002,返回第六响应。
其中,第六响应用于表示命令格式错误。
步骤1003,判断获取配置项参数命令中的参数的长度是否为第三预设长度;如果是,则执行步骤1004;否则,执行步骤1002。
步骤1004,根据获取配置项参数命令中的参数,检索对应的配置项参数。
步骤1005,判断是否检索到配置项参数,如果是,则执行步骤1007;否则,执行步骤1006。
步骤1006,返回第七响应。
其中,第七响应用于表示配置项参数不可识别。
步骤1007,读取检索到的配置项参数,并返回第五响应。
其中,第五响应用于表示命令执行成功,可以包含检索到的配置项参数的取值。
本发明提供的技术方案中,通过在主机网络中的实体之间创建动态通道,实现多管道数据传输,并为每个管道设置对应的传输缓冲区,从而避免各管道之间可能出现交叉的情况,减少了实体之间的数据传输错误,提高了数据传输的可靠性;由于动态管道可被动态地创建和删除,避免了对管理资源的长期占用,节省了主机的资源;此外,本发明提供的技术方案还并能够实现集中式控制,支持网络拓扑结构,设施简单,部署方便,支持底层的多种数据载体,适用于多种应用场景,错误处理能力强,可兼容多种硬件平台。
如图11所示,为本发明实施例中的一种嵌入式系统中实现多管道数据传输的装置结构图,嵌入式系统中预先设置有静态管道,上述装置包括:
接收模块1101,用于接收数据包。
生成模块1102,用于根据接收模块1101接收到的数据包生成消息。
第一判断模块1103,用于对第一生成模块1102生成的消息进行判断。
存储模块1104,用于存储上下文。
第一检索模块1105,用于根据接收模块1101接收到的数据包所包含的管道ID,从存储模块1104存储的上下文中检索该管道的信息。
第一处理模块1106,用于在第一检索模块1105从上下文中检索到管道的状态信息为打开状态,且第一判断模块1103判断消息为管道创建通知时,将管道创建通知中的管道信息保存到上下文中,触发发送模块1115。
第二判断模块1107,用于在第一检索模块1105从上下文中检索到管道的状态信息为关闭状态,且第一判断模块1103判断消息为打开管道命令时,判断打开管道命令是否包含参数。
第二处理模块1108,用于在第二判断模块1107判断打开管道命令不包含参数时,根据与管道连接的端口的ID,检索上下文,获取该端口上处于打开状态的管道的数量,将上下文中存储的管道的状态信息设置为打开状态,并触发发送模块1115。
第三处理模块1109,用于在第一检索模块1105从上下文中检索到管道的状态信息为打开状态,且第一判断模块1103判断消息为管道管理命令时,对上下文中存储的管道的信息进行处理,并触发发送模块1115。
第三判断模块1110,用于在第一检索模块1105从上下文中检索到管道的状态信息为打开状态,且第一判断模块1103判断消息为配置项管理命令时,判断配置项管理命令是否包含参数。
第二检索模块1111,用于在第三判断模块1110判断配置项管理命令包含参数时,根据配置项管理命令中的参数,检索对应的配置项参数。
第四处理模块1112,用于在第二检索模块1111检索到配置项参数时,对检索到的配置项参数进行处理,并触发发送模块1115。
第五处理模块1113,用于在第一检索模块1105从上下文中检索到管道的状态信息为打开状态,且第一判断模块1103判断消息为事件时,处理该事件,并触发发送模块1115。
第六处理模块1114,用于在第一检索模块1105从上下文中检索到管道的状态信息为打开状态,且第一判断模块1103判断消息为响应时,处理该响应。
发送模块1115,用于在第一检索模块1105没有从上下文中检索到管道的信息时,发送用于表示管道不存在的响应;在接收到第一处理模块1106的触发时,通过管道发送用于表示命令执行成功的响应;在第二判断模块1107判断打开管道命令包含参数时,通过管道发送用于表示命令被拒绝的响应;在接收到第二处理模块1108的触发时,通过管道发送用于表示命令执行成功的响应,该响应包含获取的处于打开状态的管道的数量;在第三判断模块1110判断配置项管理命令不包含参数时,通过管道发送用于表示命令格式错误的响应;在第二检索模块1111未检索到配置项参数时,通过管道发送用于表示配置项参数不可识别的响应;在接收到第三处理模块1109的触发时,通过管道发送与第三处理模块1109的处理结果对应的响应;在接收到第四处理模块1112的触发时,通过管道发送与第四处理模块1112的处理结果对应的响应;在接收到第五处理模块1113的触发时,通过管道发送与第五处理模块1113的处理结果对应的响应。
本实施例中的管道管理命令可以为打开管道命令;
相应地,上述第三处理模块1109,具体用于判断打开管道命令是否包含参数,在不包含参数时,根据与管道连接的端口的ID,检索上下文,获取该端口上处于打开状态的管道的数量,将所述上下文中存储的所述管道的状态信息设置为打开状态,触发发送模块1115;
上述发送模块1115,具体用于在第三处理模块1109判断打开管道命令包含参数时,通过管道发送用于表示命令被拒绝的响应;在接收到第三处理模块1109的触发时,通过管道发送用于表示命令执行成功的响应,该响应包含获取的处于打开状态的管道的数量。
本实施例中的管道管理命令还可以为关闭管道命令;
相应地,上述第三处理模块1109,具体用于判断关闭管道命令是否包含参数,在不包含参数时,将上下文中存储的管道的状态信息设置为关闭状态,并触发发送模块1115;
上述发送模块1115,具体用于在第三处理模块1115判断关闭管道命令包含参数时,通过管道发送用于表示命令被拒绝的响应;在接收到第三处理模块的触发时,通过管道发送用于表示命令执行成功的响应。
本实施例中的管道管理命令还可以为管道删除通知;
相应地,上述第三处理模块1109,具体用于将管道的信息从上下文中删除;
上述发送模块1115,具体用于通过该管道发送用于表示命令执行成功的响应。
本实施例中的配置项管理命令可以为获取配置项参数命令;
相应地,上述第四处理模块1112,具体用于读取检索到的配置项参数;
上述发送模块1115,具体用于通过管道发送用于表示命令执行成功的响应,该响应包含检索到的配置项参数的取值。
本实施例中的配置项管理命令还可以为更新配置项参数命令;
相应地,上述第四处理模块1112,具体用于判断检索到的配置项参数是否可写,在可写时,使用更新配置项参数命令中的参数值,对检索到的配置项参数进行更新,触发发送模块1115;
上述发送模块1115,具体用于在第四处理模块1112判断检索到的配置项参数不可写时,通过管道发送用于表示写入权限错误的响应;在接收到第四处理模块1112的触发时,通过管道发送用于表示命令执行成功的响应。
本实施例中的管道创建通知中的管道信息可以为动态管道信息;
相应地,上述的装置,还包括:
获取模块1116,用于获取已创建的动态管道的数量;
第四判断模块1117,用于判断获取模块1116获取的已创建的动态管道的数量是否小于预设的最大管道数;
相应地,上述第一处理模块1106,具体用于在第四判断模块1117判断已创建的动态管道的数量小于预设的最大管道数时,将管道创建通知中的动态管道信息保存到上下文中。
上述装置,还包括:
第五判断模块1118,用于判断管道创建通知所包含的源端口ID的取值是否在预设范围内;
相应地,上述第一处理模块1106,具体用于在管道创建通知所包含的源端口ID的取值在预设范围内时,将管道创建通知中的动态管道信息保存到上下文中,并触发发送模块1115。
上述装置,还包括:
第六判断模块1119,用于判断与管道连接的端口是否支持事件;
相应地,上述第五处理模块1113,具体用于在所述第六判断模块判断与所述动态管道连接的端口支持所述事件时,处理所述事件。
上述装置,还包括:
第七判断模块1120,用于判断响应是否与发送模块1115最近一次发送的命令相匹配,以及该响应是否为用于表示命令被拒绝的响应;
相应地,上述第六处理模块1114,具体用于在第七判断模块1120判断该响应与发送模块1115最近一次发送的命令相匹配,且该响应不是用于表示命令被拒绝的响应时,处理该响应。
本实施例中的配置项管理命令为更新配置项参数命令时,上述装置,还包括:
第八判断模块1121,用于判断更新配置项参数命令的长度是否为第二预设长度;
相应地,上述第二检索模块1111,具体用于在第八判断模块1121判断更新配置项参数命令的长度为第二预设长度时,根据该更新配置项参数命令包含的参数索引,检索对应的配置项参数。
本实施例中的配置项管理命令为获取配置项参数命令时,上述装置,还包括:
第九判断模块1122,用于判断获取配置项参数命令中的参数的长度是否为第三预设长度;
相应地,上述第二检索模块1111,具体用于在第九判断模块1122判断获取配置项参数命令中的参数的长度为第三预设长度时,根据获取配置项参数命令中的参数,检索对应的配置项参数。
本发明提供的技术方案中,通过在主机网络中的实体之间创建动态通道,实现多管道数据传输,并为每个管道设置对应的传输缓冲区,从而避免各管道之间可能出现交叉的情况,减少了实体之间的数据传输错误,提高了数据传输的可靠性;由于动态管道可被动态地创建和删除,避免了对管理资源的长期占用,节省了主机的资源;此外,本发明提供的技术方案还并能够实现集中式控制,支持网络拓扑结构,设施简单,部署方便,支持底层的多种数据载体,适用于多种应用场景,错误处理能力强,可兼容多种硬件平台。
结合本文中所公开的实施例描述的方法中的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (24)
1.一种嵌入式系统中实现多管道数据传输的方法,其特征在于,包括以下步骤:
A1、等待接收数据包;
A2、根据接收到的数据包生成消息,对所述消息进行判断,并根据所述数据包所包含的管道ID,从自身存储的上下文中检索所述管道的信息;
如果没有从所述上下文中检索到所述管道的信息,则发送用于表示管道不存在的响应,并返回步骤A1;
如果从所述上下文中检索到所述管道的状态信息为关闭状态,且所述消息不是打开管道命令,则发送用于表示管道未打开的响应,并返回步骤A1;如果从所述上下文中检索到所述管道的状态信息为关闭状态,且所述消息为打开管道命令,则执行步骤A4;
如果从所述上下文中检索到所述管道的状态信息为打开状态,且所述消息为管道创建通知时,则执行步骤A3;如果从所述上下文中检索到所述管道的状态信息为打开状态,且所述消息为管道管理命令时,则执行步骤A7;如果从所述上下文中检索到所述管道的状态信息为打开状态,且所述消息为配置项管理命令时,则执行步骤A8;如果从所述上下文中检索到所述管道的状态信息为打开状态,且所述消息为其他命令时,则执行步骤A13;
如果从所述上下文中检索到所述管道的状态信息为打开状态,且所述消息为事件时,则执行步骤A14;如果从所述上下文中检索到所述管道的状态信息为打开状态,且所述消息为响应时,则执行步骤A15;
A3、将所述管道创建通知中的管道信息保存到所述上下文中,通过所述管道发送用于表示命令执行成功的响应,并返回步骤A1;
A4、判断所述打开管道命令是否包含参数,如果是,则执行步骤A5;否则,执行步骤A6;
A5、通过所述管道发送用于表示命令被拒绝的响应,并返回步骤A1;
A6、根据与所述管道连接的端口的ID,检索所述上下文,获取所述端口上处于打开状态的管道的数量,将所述上下文中存储的所述管道的状态信息设置为打开状态,通过所述管道发送用于表示命令执行成功的响应,并返回步骤A1,所述响应包含获取的处于打开状态的管道的数量;
A7、对所述上下文中存储的所述管道的信息进行处理,通过所述管道发送与处理结果对应的响应,并返回步骤A1;
A8、判断所述配置项管理命令是否包含参数,如果是,则执行步骤A10;否则,执行步骤A9;
A9、通过所述管道发送用于表示命令格式错误的响应,并返回步骤A1;
A10、根据所述配置项管理命令中的参数,检索对应的配置项参数,判断是否检索到配置项参数,如果是,则执行步骤A12;否则,执行步骤A11;
A11、通过所述管道发送用于表示配置项参数不可识别的响应,并返回步骤A1;
A12、对检索到的配置项参数进行处理,通过所述管道发送与处理结果对应的响应,并返回步骤A1;
A13、根据所述命令进行相应的处理,通过所述管道发送与处理结果对应的响应,并返回步骤A1;
A14、处理所述事件,通过所述管道发送与处理结果对应的响应,并返回步骤A1;
A15、处理所述响应,并返回步骤A1。
2.如权利要求1所述的方法,其特征在于,所述管道管理命令为打开管道命令;所述对上下文中存储的所述管道的信息进行处理,通过所述管道发送与处理结果对应的响应,具体为:
判断所述打开管道命令是否包含参数,如果是,则通过所述管道发送用于表示命令被拒绝的响应;否则,根据与所述管道连接的端口的ID,检索所述上下文,获取所述端口上处于打开状态的管道的数量,将所述上下文中存储的所述管道的状态信息设置为打开状态,通过所述管道发送用于表示命令执行成功的响应,所述响应包含获取的处于打开状态的管道的数量。
3.如权利要求1所述的方法,其特征在于,所述管道管理命令为关闭管道命令;所述对上下文中存储的所述管道的信息进行处理,通过所述管道发送与处理结果对应的响应,具体为:
判断所述关闭管道命令是否包含参数,如果是,则通过所述管道发送用于表示命令被拒绝的响应;否则,将所述上下文中存储的所述管道的状态信息设置为关闭状态,通过所述管道发送用于表示命令执行成功的响应。
4.如权利要求1所述的方法,其特征在于,所述管道管理命令为管道删除通知;所述对上下文中存储的所述管道的信息进行处理,通过所述管道发送与处理结果对应的响应,具体为:
将所述管道的信息从所述上下文中删除,通过所述管道发送用于表示命令执行成功的响应。
5.如权利要求1所述的方法,其特征在于,所述配置项管理命令为获取配置项参数命令;所述对检索到的配置项参数进行处理,通过所述管道发送与处理结果对应的响应,具体为:
读取所述检索到的配置项参数,通过所述管道发送用于表示命令执行成功的响应,所述响应包含所述检索到的配置项参数的取值。
6.如权利要求1所述的方法,其特征在于,所述配置项管理命令为更新配置项参数命令;所述对检索到的配置项参数进行处理,通过所述管道发送与处理结果对应的响应,具体为:
判断所述检索到的配置项参数是否可写,如果是,则使用所述更新配置项参数命令中的参数值,对所述检索到的配置项参数进行更新,通过所述管道发送用于表示命令执行成功的响应;否则,通过所述管道发送用于表示写入权限错误的响应。
7.如权利要求1所述的方法,其特征在于,所述管道创建通知中的管道信息为动态管道信息;所述将所述管道创建通知中的管道信息保存到所述上下文中,具体为:
当自身已创建的动态管道的数量小于预设的最大管道数时,将所述管道创建通知中的动态管道信息保存到所述上下文中;
所述将所述管道创建通知中的动态管道信息保存到所述上下文中之前,还包括:
获取自身已创建的动态管道的数量,判断所述已创建的动态管道的数量是否小于预设的最大管道数。
8.如权利要求1所述的方法,其特征在于,所述管道创建通知中的管道信息为动态管道信息;所述将所述管道创建通知中的管道信息保存到所述上下文中,具体为:
当所述管道创建通知所包含的源端口ID的取值在预设范围内时,将所述管道创建通知中的动态管道信息保存到所述上下文中;
所述将所述管道创建通知中的动态管道信息保存到所述上下文中之前,还包括:
判断所述管道创建通知所包含的源端口ID的取值是否在预设范围内。
9.如权利要求1所述的方法,其特征在于,所述处理所述事件,通过所述管道发送与处理结果对应的响应,具体为:
当与所述管道连接的端口支持所述事件时,处理所述事件,通过所述管道发送与处理结果对应的响应;
所述处理所述事件,通过所述管道发送相应的响应之前,还包括:
判断与所述管道连接的端口是否支持所述事件。
10.如权利要求1所述的方法,其特征在于,所述处理所述响应,具体为:
当所述响应与自身最近一次发送的命令相匹配,且所述响应不是用于表示命令被拒绝的响应时,处理所述响应;
所述处理所述响应之前,还包括:
判断所述响应是否与自身最近一次发送的命令相匹配,以及所述响应是否为用于表示命令被拒绝的响应。
11.如权利要求1所述的方法,其特征在于,所述配置项管理命令为更新配置项参数命令;所述根据所述配置项管理命令包含的参数索引,检索对应的配置项参数,具体为:
当所述更新配置项参数命令的长度为第二预设长度时,根据所述更新配置项参数命令包含的参数索引,检索对应的配置项参数;
所述根据所述配置项管理命令包含的参数索引,检索对应的配置项参数之前,还包括:
判断所述更新配置项参数命令的长度是否为第二预设长度。
12.如权利要求1所述的方法,其特征在于,所述配置项管理命令为获取配置项参数命令;所述根据所述配置项管理命令中的参数,检索对应的配置项参数,具体为:
当所述获取配置项参数命令中的参数的长度为第三预设长度时,根据所述获取配置项参数命令中的参数,检索对应的配置项参数;
所述根据所述配置项管理命令中的参数,检索对应的配置项参数之前,还包括:
判断所述获取配置项参数命令中的参数的长度是否为第三预设长度。
13.一种嵌入式系统中实现多管道数据传输的装置,其特征在于,包括:
接收模块,用于接收数据包;
生成模块,用于根据所述接收模块接收到的数据包生成消息;
第一判断模块,用于对所述消息进行判断;
存储模块,用于存储上下文;
第一检索模块,用于根据所述接收模块接收到的数据包所包含的管道ID,从所述存储模块存储的上下文中检索所述管道的信息;
第一处理模块,用于在所述第一检索模块从所述上下文中检索到所述管道的状态信息为打开状态,且所述第一判断模块判断所述消息为管道创建通知时,将所述管道创建通知中的管道信息保存到所述上下文中,触发发送模块;
第二判断模块,用于在所述第一检索模块从所述上下文中检索到所述管道的状态信息为关闭状态,且所述第一判断模块判断所述消息为打开管道命令时,判断所述打开管道命令是否包含参数;
第二处理模块,用于在所述第二判断模块判断所述打开管道命令不包含参数时,根据与所述管道连接的端口的ID,检索所述上下文,获取所述端口上处于打开状态的管道的数量,将所述上下文中存储的所述管道的状态信息设置为打开状态,并触发发送模块;
第三处理模块,用于在所述第一检索模块从所述上下文中检索到所述管道的状态信息为打开状态,且所述第一判断模块判断所述消息为管道管理命令时,对所述上下文中存储的所述管道的信息进行处理,并触发发送模块;
第三判断模块,用于在所述第一检索模块从所述上下文中检索到所述管道的状态信息为打开状态,且所述第一判断模块判断所述消息为配置项管理命令时,判断所述配置项管理命令是否包含参数;
第二检索模块,用于在所述第三判断模块判断所述配置项管理命令包含参数时,根据所述配置项管理命令中的参数,检索对应的配置项参数;
第四处理模块,用于在所述第二检索模块检索到配置项参数时,对检索到的配置项参数进行处理,并触发发送模块;
第五处理模块,用于在所述第一检索模块从所述上下文中检索到所述管道的状态信息为打开状态,且所述第一判断模块判断所述消息为事件时,处理所述事件,并触发发送模块;
第六处理模块,用于在所述第一检索模块从所述上下文中检索到所述管道的状态信息为打开状态,且所述第一判断模块判断所述消息为响应时,处理所述响应;
发送模块,用于在所述第一检索模块没有从所述上下文中检索到所述管道的信息时,发送用于表示管道不存在的响应;在接收到所述第一处理模块的触发时,通过所述管道发送用于表示命令执行成功的响应;在所述第二判断模块判断所述打开管道命令包含参数时,通过所述管道发送用于表示命令被拒绝的响应;在接收到所述第二处理模块的触发时,通过所述管道发送用于表示命令执行成功的响应,所述响应包含获取的处于打开状态的管道的数量;在所述第三判断模块判断所述配置项管理命令不包含参数时,通过所述管道发送用于表示命令格式错误的响应;在所述第二检索模块未检索到配置项参数时,通过所述管道发送用于表示配置项参数不可识别的响应;在接收到所述第三处理模块的触发时,通过所述管道发送与所述第三处理模块的处理结果对应的响应;在接收到所述第四处理模块的触发时,通过所述管道发送与所述第四处理模块的处理结果对应的响应;在接收到所述第五处理模块的触发时,通过所述管道发送与所述第五处理模块的处理结果对应的响应。
14.如权利要求13所述的装置,其特征在于,所述管道管理命令为打开管道命令;
所述第三处理模块,具体用于判断所述打开管道命令是否包含参数,在不包含参数时,根据与所述管道连接的端口的ID,检索所述上下文,获取所述端口上处于打开状态的管道的数量,将所述上下文中存储的所述管道的状态信息设置为打开状态,触发所述发送模块;
所述发送模块,具体用于在所述第三处理模块判断所述打开管道命令包含参数时,通过所述管道发送用于表示命令被拒绝的响应;在接收到所述第三处理模块的触发时,通过所述管道发送用于表示命令执行成功的响应,所述响应包含获取的处于打开状态的管道的数量。
15.如权利要求13所述的装置,其特征在于,所述管道管理命令为关闭管道命令;
所述第三处理模块,具体用于判断所述关闭管道命令是否包含参数,在不包含参数时,将所述上下文中存储的所述管道的状态信息设置为关闭状态,并触发所述发送模块;
所述发送模块,具体用于在所述第三处理模块判断所述关闭管道命令包含参数时,通过所述管道发送用于表示命令被拒绝的响应;在接收到所述第三处理模块的触发时,通过所述管道发送用于表示命令执行成功的响应。
16.如权利要求13所述的装置,其特征在于,所述管道管理命令为管道删除通知;
所述第三处理模块,具体用于将所述管道的信息从所述上下文中删除;
所述发送模块,具体用于通过所述管道发送用于表示命令执行成功的响应。
17.如权利要求13所述的装置,其特征在于,所述配置项管理命令为获取配置项参数命令;
所述第四处理模块,具体用于读取所述检索到的配置项参数;
所述发送模块,具体用于通过所述管道发送用于表示命令执行成功的响应,所述响应包含所述检索到的配置项参数的取值。
18.如权利要求13所述的装置,其特征在于,所述配置项管理命令为更新配置项参数命令;
所述第四处理模块,具体用于判断所述检索到的配置项参数是否可写,在可写时,使用所述更新配置项参数命令中的参数值,对所述检索到的配置项参数进行更新,触发所述发送模块;
所述发送模块,具体用于在所述第四处理模块判断所述检索到的配置项参数不可写时,通过所述管道发送用于表示写入权限错误的响应;在接收到所述第四处理模块的触发时,通过所述管道发送用于表示命令执行成功的响应。
19.如权利要求13所述的装置,其特征在于,所述管道创建通知中的管道信息为动态管道信息;
所述装置,还包括:
获取模块,用于获取已创建的动态管道的数量;
第四判断模块,用于判断所述获取模块获取的已创建的动态管道的数量是否小于预设的最大管道数;
所述第一处理模块,具体用于在已创建的动态管道的数量小于预设的最大管道数时,将所述管道创建通知中的动态管道信息保存到所述上下文中。
20.如权利要求13所述的装置,其特征在于,所述管道创建通知中的管道信息为动态管道信息;
所述装置,还包括:
第五判断模块,用于判断所述管道创建通知所包含的源端口ID的取值是否在预设范围内;
所述第一处理模块,具体用于在所述管道创建通知所包含的源端口ID的取值在预设范围内时,将所述管道创建通知中的动态管道信息保存到所述上下文中,触发所述发送模块。
21.如权利要求13所述的装置,其特征在于,还包括:
第六判断模块,用于判断与所述管道连接的端口是否支持所述事件;
所述第五处理模块,具体用于在所述第六判断模块判断与所述管道连接的端口支持所述事件时,处理所述事件。
22.如权利要求13所述的装置,其特征在于,还包括:
第七判断模块,用于判断所述响应是否与所述发送模块最近一次发送的命令相匹配,以及所述响应是否为用于表示命令被拒绝的响应;
所述第六处理模块,具体用于在所述第七判断模块判断所述响应与所述发送模块最近一次发送的命令相匹配,且所述响应不是用于表示命令被拒绝的响应时,处理所述响应。
23.如权利要求13所述的装置,其特征在于,所述配置项管理命令为更新配置项参数命令;
所述的装置,还包括:
第八判断模块,用于判断所述更新配置项参数命令的长度是否为第二预设长度;
所述第二检索模块,具体用于在所述第八判断模块判断所述更新配置项参数命令的长度为第二预设长度时,根据所述更新配置项参数命令包含的参数索引,检索对应的配置项参数。
24.如权利要求13所述的装置,其特征在于,所述配置项管理命令为获取配置项参数命令;
所述的装置,还包括:
第九判断模块,用于判断所述获取配置项参数命令中的参数的长度是否为第三预设长度;
所述第二检索模块,具体用于在所述第九判断模块判断所述获取配置项参数命令中的参数的长度为第三预设长度时,根据所述获取配置项参数命令中的参数,检索对应的配置项参数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210579964.7A CN103077134B (zh) | 2012-12-27 | 2012-12-27 | 一种嵌入式系统中实现多管道数据传输的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210579964.7A CN103077134B (zh) | 2012-12-27 | 2012-12-27 | 一种嵌入式系统中实现多管道数据传输的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103077134A true CN103077134A (zh) | 2013-05-01 |
CN103077134B CN103077134B (zh) | 2015-10-28 |
Family
ID=48153666
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210579964.7A Expired - Fee Related CN103077134B (zh) | 2012-12-27 | 2012-12-27 | 一种嵌入式系统中实现多管道数据传输的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103077134B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103605529A (zh) * | 2013-05-17 | 2014-02-26 | 华为终端有限公司 | 应用程序的处理方法和装置 |
CN105656995A (zh) * | 2015-12-25 | 2016-06-08 | 深圳中兴网信科技有限公司 | 基于分布式处理的数据共享方法和系统 |
CN109324874A (zh) * | 2018-09-25 | 2019-02-12 | 郑州云海信息技术有限公司 | 一种虚拟机内存快照导入块设备的方法、系统及装置 |
CN113364832A (zh) * | 2021-04-26 | 2021-09-07 | 北京旷视科技有限公司 | 数据传输通道部署方法及装置、跨网数据传输方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030224798A1 (en) * | 2002-05-31 | 2003-12-04 | Serge Willenegger | Dynamic channelization code allocation |
CN101132600A (zh) * | 2006-08-21 | 2008-02-27 | 财团法人工业技术研究院 | 无线网络中动态信道分配方法与装置 |
CN101399811A (zh) * | 2007-09-27 | 2009-04-01 | 华为技术有限公司 | 多通道数据发送/接收以及传输控制方法和相应的装置 |
CN102006630A (zh) * | 2010-11-10 | 2011-04-06 | 北京航空航天大学 | 多信道协作数据传输方法及系统 |
US20110280335A1 (en) * | 2010-05-15 | 2011-11-17 | Ralink Technology Corporation | Method for multi-channel transmission with multiple frequency segments |
-
2012
- 2012-12-27 CN CN201210579964.7A patent/CN103077134B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030224798A1 (en) * | 2002-05-31 | 2003-12-04 | Serge Willenegger | Dynamic channelization code allocation |
CN101132600A (zh) * | 2006-08-21 | 2008-02-27 | 财团法人工业技术研究院 | 无线网络中动态信道分配方法与装置 |
CN101399811A (zh) * | 2007-09-27 | 2009-04-01 | 华为技术有限公司 | 多通道数据发送/接收以及传输控制方法和相应的装置 |
US20110280335A1 (en) * | 2010-05-15 | 2011-11-17 | Ralink Technology Corporation | Method for multi-channel transmission with multiple frequency segments |
CN102006630A (zh) * | 2010-11-10 | 2011-04-06 | 北京航空航天大学 | 多信道协作数据传输方法及系统 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103605529A (zh) * | 2013-05-17 | 2014-02-26 | 华为终端有限公司 | 应用程序的处理方法和装置 |
CN103605529B (zh) * | 2013-05-17 | 2018-01-23 | 华为终端(东莞)有限公司 | 应用程序的处理方法和装置 |
CN105656995A (zh) * | 2015-12-25 | 2016-06-08 | 深圳中兴网信科技有限公司 | 基于分布式处理的数据共享方法和系统 |
CN109324874A (zh) * | 2018-09-25 | 2019-02-12 | 郑州云海信息技术有限公司 | 一种虚拟机内存快照导入块设备的方法、系统及装置 |
CN109324874B (zh) * | 2018-09-25 | 2021-08-31 | 郑州云海信息技术有限公司 | 一种虚拟机内存快照导入块设备的方法、系统及装置 |
CN113364832A (zh) * | 2021-04-26 | 2021-09-07 | 北京旷视科技有限公司 | 数据传输通道部署方法及装置、跨网数据传输方法及装置 |
CN113364832B (zh) * | 2021-04-26 | 2022-09-27 | 北京旷视科技有限公司 | 数据传输通道部署方法及装置、跨网数据传输方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103077134B (zh) | 2015-10-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102426594B (zh) | 对数据库进行操作的方法和系统 | |
CN103473272B (zh) | 数据处理方法、装置及系统 | |
CN103401902A (zh) | 一种便携式云存储系统及方法 | |
CN106446159B (zh) | 一种存储文件的方法、第一虚拟机及名称节点 | |
CN106095337A (zh) | 一种基于san网络存储的云盘快速共享方法 | |
CN104580395B (zh) | 一种基于现存云存储平台的多云协同存储中间件系统 | |
CN103647850B (zh) | 一种分布式版本控制系统的数据处理方法、设备及系统 | |
CN107229415A (zh) | 一种数据写方法、数据读方法及相关设备、系统 | |
CN102982182B (zh) | 一种数据存储规划方法及装置 | |
CN101887388A (zh) | 基于内存数据库的数据备份系统和方法 | |
JP2018521405A (ja) | アクセス方法及び装置 | |
CN103077134A (zh) | 一种嵌入式系统中实现多管道数据传输的方法和装置 | |
CN106897442A (zh) | 一种分布式文件系统用户配额预分配方法及分配系统 | |
CN107870734A (zh) | 一种分布式文件系统的交互方法及装置 | |
CN109582213A (zh) | 数据重构方法及装置、数据存储系统 | |
CN110569651A (zh) | 基于国产操作系统的文件透明加解密方法及系统 | |
CN102387175A (zh) | 一种存储系统迁移的方法和系统 | |
CN110147203A (zh) | 一种文件管理方法、装置、电子设备及存储介质 | |
CN106959907A (zh) | 一种云平台碎片化数据备份还原系统 | |
US10095706B2 (en) | Data access system and data access method | |
CN111435286B (zh) | 一种数据存储方法、装置和系统 | |
CN110365587A (zh) | 设备间通信方法、装置、设备和存储介质 | |
CN105488108A (zh) | 一种多个视频文件高速并行存储的方法及装置 | |
CN102427477A (zh) | 一种无线云存储装置 | |
KR102089291B1 (ko) | 데이터 익스텐트 이동 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20151028 |