通过GATT和异常处理来适配的通信方法及系统与流程

文档序号:21478556发布日期:2020-07-14 17:04阅读:294来源:国知局
通过GATT和异常处理来适配的通信方法及系统与流程

本发明属于数据通信技术领域,尤其涉及通过gatt和异常处理来适配的通信方法及系统。



背景技术:

通用属性协议gatt(genericattributeprofile)负责两个ble设备间的数据交互。gatt使用了att(attributeprotocol)协议,gatt将att中定义的属性进行分组,包括“服务(service)”和“特征(characteristic)”,一个服务中包含了一个或多个特征,每个特征由多个属性进行描述,服务的集合形成了gattprofile,bluetoothsig官方定义了一些标准的service供开发者使用,这些服务和特征对应的数据由att保存在一个查找表中,通过分配的uuid作为每一项的索引。gatt还使用att中的属性操作方法定义子程序以实现不同的功能,即gattfeature。gatt中定义了11项子程序,本发明中的gatt数据交换过程使用到了其中的“写特征值子程序(characteristicvaluewrite)”、“指示子程序(characteristicvalueindication)”和“写特征描述符子程序(characteristicdescriptorvaluewrite)”。对于gatt来说,向上与应用层交互,为应用层提供合适的gattprofile结构,向下将任务子程序交给att完成。

设备使用基于gatt层构建的cpa(communicationprotocoladaption,通信协议适配)层在进行通信时,可能出现的错误可以分为四类:第一类是用于管理cpa状态的时间间隔超时、cpa层cc特征出错(包括但不限于未启用cc特征值指示功能就发送cc特征指示)以及cpapdu的asn字段的值的变化违反了cpa定义的规则;第二类错误是通信过程中gatt子程序执行出错,错误反馈的形式为相应的错误响应代码,这些错误响应代码定义在att协议中;第三类错误是att协议中定义的错误响应代码无法完全覆盖本发明通信方法可能出现的错误,使得gatt无法进行相应的错误处理,因此为了支持cpa层数据交换,在att预留的应用层错误代码范围内定义了新的、针对cpapdu交换可能出现的错误的错误代码;第四类错误是根据实际应用需求可以设置ble设备的连接参数来实现低功耗和传输速率,这三个参数包括连接间隔(connectioninterval)、从设备延迟(slavelatency)和超时时间(supervisiontimeout),这三个参数需要满足supervisiontimeout>(1+slavelatency)*(connectioninterval)的要求,否则连接就会发生不正常断开。因此在通信过程中,如果发生链路层连接超时断开错误,gatt和cpa层需要进行相应的后续处理以维持通信。

本发明基于“专利号为201910783902.x”的通过att和异常处理来适配的通信方法及系统;

本发明基于“专利号为201910766067.9”的一种依赖于att和指示进行适配的数据通信方法及系统;

现有通讯方式在通信双方在数据交换过程中或cpa数据交换过程中,往往会出现如时间间隔超时、cpa层cc特征出错、gatt子程序执行出错、gatt协议错误等错误或链路丢失等错误或异常,从而导致通信双方通讯失败的问题。



技术实现要素:

本发明提供通过gatt和异常处理来适配的通信方法及系统,以解决上述背景技术中提出了在通信双方在数据交换过程中或cpa数据交换过程中,往往会出现如时间间隔超时、cpa层cc特征出错、gatt子程序执行出错、gatt协议错误等错误或链路丢失等错误或异常,从而导致通信双方通讯失败的问题。

本发明所解决的技术问题采用以下技术方案来实现:通过gatt和异常处理来适配的通信方法,所述通信方法包括在主、从设备进行数据交换前,通信双方分别建立由下至上依次为底层传输层、属性协议att层、通用属性规范gatt层、通用属性规范协议适配cpa层、数据交换协议phd层和应用层的数据通信协议栈层级结构;

所述cpa层包括异常处理方法,所述异常处理方法包括:

若通信双方在数据交换过程中,产生时间间隔超时或cc特征异常或asn字段的值异常,则执行相应的主动式异常事件干预;

若通信双方在cpa数据交换过程中,产生gatt子程序执行出错,则执行相应的主动式gatt错误干预;

若通信双方在cpa数据交换过程中,发送方向接收方发送一个cpapdu时,原发送方可能会接收到gatt层上抛的、定义在att预留的应用层错误代码范围内的、由gatt使用的错误,则执行相应的主动式cpapdu错误干预;

若检测到链路丢失时,则执行相应的非主动式异常事件处理。

进一步,所述若通信双方在数据交换过程中,产生时间间隔超时或cc特征异常或asn字段的值异常,则执行相应的主动式异常事件干预包括:

主设备默认从设备的cc特征的指示功能已关闭,清除工作状态数据,向phd层发送语义为底层连接已断开事件通知,并且在下一次连接之前不处理从设备发送的其它数据;

从设备则关闭cc特征的指示功能,清除工作状态数据,向phd层发送语义为底层连接已断开事件通知,并且除连接请求外,不处理主设备发送的其它数据。

进一步,所述若通信双方在cpa数据交换过程中,产生gatt子程序执行出错,则执行相应的主动式gatt错误干预包括:

所述gatt协议使用的错误响应的语义包括但不限于gatt认证不足、gatt加密不足、gatt意外错误以及其他相关错误;

若通信双方gatt认证不足,则主设备可进行gatt认证操作并重新执行gatt写特征描述符子程序;

若通信双方gatt加密不足,则主设备可进行gatt加密操作并重新执行gatt写特征描述符子程序;

若通信双方gatt意外错误,且通信双方处于cpa连接子流程中,则主设备可尝试重新执行gatt写特征描述符子程序。

进一步,所述若检测到链路丢失时,则执行相应的非主动式异常事件处理,包括:

若通信双方在完成上一个cpapdu传输后的任何时刻检测到链路丢失时,则gatt执行相应的第一非主动式异常事件处理;

或;

所述若通信双方在完成任一个cpapdu的任一个片段传输后的任何时刻检测到链路丢失时,则gatt执行第二主动式异常事件处理。

进一步,其特征在于,所述若通信双方在完成上一个cpapdu传输后的任何时刻检测到链路丢失时,则gatt执行相应的第一非主动式异常事件处理包括:

所述工作状态数据包括上一个cpapdu中的asn值,并且在底层链路断开时:

若发送方正在经gatt层发送cpapdu,工作状态数据还包括当前cpapdu,并在底层链路重连后重新通过gatt发送cpapdu;

若接收方正在经gatt层接收当前cpapdu,则丢弃已接收的属于当前cpapdu的所有片段。

进一步,所述若通信双方在完成任一个cpapdu的任一个片段传输后的任何时刻检测到链路丢失时,则gatt执行相应的第二非主动式异常事件处理包括:

所述工作状态数据包括该cpapdu中的asn值以及sar值,并且在底层链路断开时:

若发送方正在经gatt层发送该cpapdu的下一个片段,工作状态数据还包括该cpapdu,并在底层链路重连后通过gatt继续发送该cpapdu的下一个片段;

若接收方正在经gatt层接收该cpapdu的下一个片段,工作状态数据还包括已接收的cpapdu的部分片段,并在底层链路重连后等待接收该cpapdu的下一个片段。

同时,本发明还提供通过gatt和异常处理来适配的通信系统,所述通信系统基于主、从设备进行数据交换前,通信双方分别建立由下至上依次为底层传输层、属性协议att层、通用属性规范gatt层、通用属性规范协议适配cpa层、数据交换协议phd层和应用层的数据通信协议栈层级结构;

所述异常处理模块用于:

实现上述任一项的异常处理方法。

有益技术效果:

由于采用若通信双方在数据交换过程中,产生时间间隔超时或cc特征异常或asn字段的值异常,则执行相应的主动式异常事件干预;若通信双方在cpa数据交换过程中,产生gatt子程序执行出错,则执行相应的主动式gatt错误干预;若通信双方在cpa数据交换过程中,发送方向接收方发送一个cpapdu时,原发送方可能会接收到gatt层上抛的、定义在att预留的应用层错误代码范围内的、由gatt使用的错误,则执行相应的主动式cpapdu错误干预;若检测到链路丢失时,则执行相应的非主动式异常事件处理;

相较于“专利号为201910783902.x的通过att和异常处理来适配的通信方法及系统”,本发明的特点在于:

1、cpa层错误源不同,本发明cpa层可能产生错误的对象是cc特征,““专利号为201910783902.x”的通过att和异常处理来适配的通信方法及系统”的可能产生错误的对象是cc属性和ie属性。

2、错误处理的对象不同,本发明的操作对象是cpa服务中的cc特征,“专利号为201910783902.x的通过att和异常处理来适配的通信方法及系统”的操作对象是cc属性和ie属性。前者相对于后者而言,对于应用层开发人员而言,操作的目标对象数量减少50%,操作起来更加简便;对于从设备端而言,在内部时序管理上也更为简单。

3、异常处理的方式不同,本发明采用的是gatt中定义的写特征描述符子程序、指示子程序和写特征子程序保证数据的可靠传输,而“专利号为201910783902.x”的通过att和异常处理来适配的通信方法及系统”采用的是att定义的“请求、响应、指示和确认”实现容错功能。前者相当于后者而言,为主设备与从设备提供了在应用层的会话式交互能力,隐藏了会话过程中的一些细节,简化了应用层开发人员的工作量,使得开发人员可以更好地专注于应用层业务逻辑的实施。从本质上说,这是牺牲一定的细节定制化能力而换取对应用层开发的简化。

由于本发明定义了处理过程的错误以及自动处理、不需要干预的错误,对处理过程的错误通过纠错机制主动修复,对于不需要干预的错误进行自动修复,由于本方法识别了数据交换过程中产生的错误类型并进行的主动或自动的容错处理,因此,保证了数据通信过程的有效性。

附图说明

图1是本发明通过gatt和异常处理来适配的通信方法的流程图;

图2是主动式异常事件干预过程的时序图;

图3是主动式cpapdu错误干预示例的时序图;

图4是第一非主动式异常事件处理示例图;

图5是第二非主动式异常事件处理示例图。

本发明提供的技术方案在实施时具有灵活性,通过设置该技术方案中的部分参数以及阐述与之关联的较佳的应用设计,可以为本发明所要达到的技术效果提供优选方案,下面结合附图对本发明做进一步描述:

图中标号表示如下:

1—底层传输层,2—att层,3—gatt层,4—cpa层,5—phd层,6—应用层;

st401:若通信双方在数据交换过程中,产生时间间隔超时或cc特征异常或asn字段的值异常;

st402:则执行相应的主动式异常事件干预;

st403:若通信双方在cpa数据交换过程中,产生gatt子程序执行出错;

st404:则执行相应的主动式gatt错误干预;

st405:若通信双方在cpa数据交换过程中,发送方向接收方发送一个cpapdu时,原发送方可能会接收到gatt层上抛的、定义在att预留的应用层错误代码范围内的、由gatt使用的错误;

st406:则执行相应的主动式cpapdu错误干预;

st407:若检测到链路丢失时;

st408:则执行相应的非主动式异常事件处理;

具体实施方式

如图1所示,通信双方在数据交换过程中可能发生的错误类型分为四类:

第一类是用于管理cpa连接状态的时间间隔超时、cpa层cc特征出错以及asn字段错误,管理cpa状态的时间间隔是在专利号为201910783902.x的通过att和异常处理来适配的通信方法及系统中定义的时间间隔的基础上重定义的3个时间间隔,第一时间间隔是cpa层在接收到底层传输层发送的链路连接超时错误后直到链路重连成功的最长等待时间;第二时间间隔是在底层传输层主动断开之后,当cpa层从phd层接收到apdu时,cpa层向底层传输层发送建立底层连接内部指令开始直到底层传输层完成重连的最长等待时间;第三时间间隔是cpa层接收到phd层发送的语义为断开底层连接内部指令或者cpa连接子流程或cpa运行子流程发生错误后,直到主设备执行gatt中写特征描述符子程序来关闭cc特征的指示功能的最长等待时间。

cc特征出错包括但不限于从设备未启用cc特征值指示功能就发送cc特征指示。

asn字段错误是指cpapdu的asn字段的值的变化违反了cpa定义的规则。

图2所示为应对第一类错误的主动式异常干预过程。

第二类错误是通信过程中gatt子程序执行出错,错误反馈的形式为相应的错误响应代码,gatt的子程序是交给att去完成的,因此gatt子程序执行出错使用的错误响应代码定义在att协议中。

第三类错误是cpapdu传输错误,cpa层是本发明创建的适配层,因此att协议中定义的错误响应代码无法完全覆盖本发明通信方法可能出现的错误,为了支持cpa层数据交换,本发明在att预留的应用层错误代码范围内定义了新的、针对cpapdu交换可能出现的错误的错误代码,使得基于gatt构建的cpa层具备相应的容错能力。

图3为应对第三类错误的主动式cpapdu错误干预过程的示例,第三类错误定义的错误代码包括但不限于语义为“cpapdu接收出错”和“cpapdu信息部过长”。

第四类错误是链路连接超时错误,设备在实施时根据实际应用需求可以设置ble设备的连接参数来实现低功耗和传输速率,这三个参数包括连接间隔(connectioninterval)、从设备延迟(slavelatency)和超时时间(supervisiontimeout),这三个参数需要满足supervisiontimeout>(1+slavelatency)*(connectioninterval)的要求,否则连接就会不正常断开。因此在数据传输中,检测到链路层连接超时断开错误,gatt和cpa层需要进行相应的后续处理,如果链路重连成功则执行第一非主动式异常事件处理过程或第二非主动式异常事件处理过程,否则执行相应的时间间隔超时处理过程。

图4为应对第四类错误的第一非主动式异常事件处理过程,通信设备在链路连接超时断开并重连成功后,重传当前cpapdu的所有片段。

图5为应对第四类错误的第二非主动式异常事件处理过程,通信设备在链路连接超时断开并重连成功后,重传当前cpapdu的下一个片段。

如图1~5所示,通过gatt和异常处理来适配的通信方法,所述通信方法包括在主、从设备进行数据交换前,通信双方分别建立由下至上依次为底层传输层1、属性协议att层2、通用属性规范gatt层3、通用属性规范协议适配cpa层4、数据交换协议phd层5和应用层6的数据通信协议栈层级结构;

所述cpa层4包括异常处理方法,所述异常处理方法包括:

若通信双方在数据交换过程中,产生时间间隔超时或cc特征异常或asn字段的值异常st401,则执行相应的主动式异常事件干预st402;

若通信双方在cpa数据交换过程中,产生gatt子程序执行出错st403,则执行相应的主动式gatt错误干预st404;

若通信双方在cpa数据交换过程中,发送方向接收方发送一个cpapdu时,原发送方可能会接收到gatt层3上抛的、定义在att预留的应用层6错误代码范围内的、由gatt使用的错误st405,则执行相应的主动式cpapdu错误干预st406;

若检测到链路丢失时st407,则执行相应的非主动式异常事件处理st408。

由于包括通信协议适配层(cpa层),cpa层所属的数据通信协议栈层级结构由下至上分别为底层传输层、gatt层、gatt层、cpa层、phd层和应用层。cpa由数据单元cpapdu和cpa数据交换过程构成。本发明提供的cpa层通过对底层传输层的运行进行管理,使得依赖于可靠底层传输(connection-oriented)的phd能够在以无状态(stateless)通信为特征的gatt上正常运行,不受gatt和底层传输频繁断开和重连的影响,不受gatt的协议消息长度的限制,既充分利用gatt的低功耗特性,又能够实现通信双方在应用层的同步交互;

由于cpa层数据交换过程中,产生的错误和进行的容错处理包括:

cpa连接子流程中,当cpa连接未成功前,主设备或从设备接收到了与cc特征不相关的数据消息后,执行主动式异常事件干预过程。

cpa运行子流程中,如果主设备或从设备接收到的cpapdu中asn字段的值不是最近一次成功交互(发送或接收)的cpapdu中asn值加1,执行主动式异常事件处理过程。

cpa运行子流程中,如果cpa层接收到来自phd层的apdu时,向已断开连接的底层传输层发送语义为“建立底层连接”内部指令后,已等待第二时间间隔且未接收到底层传输层发送的“底层连接已建立”事件通知时,即执行主动式异常事件干预过程。

cpa断开子流程中,如果在第三时间间隔内主设备未执行gatt中的“写特征描述符子程序”时,执行主动式异常事件干预过程。

所述若通信双方在数据交换过程中,产生时间间隔超时或cc特征异常或asn字段的值异常st401,则执行相应的主动式异常事件干预st402包括:

主设备默认从设备的cc特征的指示功能已关闭,清除工作状态数据,向phd层5发送语义为底层连接已断开事件通知,并且在下一次连接之前不处理从设备发送的其它数据;

从设备则关闭cc特征的指示功能,清除工作状态数据,向phd层5发送语义为底层连接已断开事件通知,并且除连接请求外,不处理主设备发送的其它数据。

所述若通信双方在cpa数据交换过程中,产生gatt子程序执行出错st403,则执行相应的主动式gatt错误干预st404包括:

所述gatt协议使用的错误响应的语义包括但不限于gatt认证不足、gatt加密不足、gatt意外错误以及其他相关错误;

若通信双方gatt认证不足,则主设备可进行gatt认证操作并重新执行gatt写特征描述符子程序;

若通信双方gatt加密不足,则主设备可进行gatt加密操作并重新执行gatt写特征描述符子程序;

若通信双方gatt意外错误,且通信双方处于cpa连接子流程中,则主设备可尝试重新执行gatt写特征描述符子程序。

由于gatt层产生的错误为gatt错误。在cpa连接子流程中,主设备执行gatt中的“写特征描述符子程序”的过程中,可能接收到从设备回复的gatt上抛的错误响应,其语义包括但不限于以下情形:

一、认证不足。此时主设备可进行认证操作并重新执行“写特征描述符子程序”。

二、加密不足。此时主设备可进行加密操作并重新执行“写特征描述符子程序”。

三、意外错误。此时主设备可尝试重新执行“写特征描述符子程序”。

四、除了以上错误外的其它错误;

如果一至四中的某一个错误重复出现,由应用层决定后续的错误处理操作。

所述若检测到链路丢失时st407,则执行相应的非主动式异常事件处理st408,包括:

若通信双方在完成上一个cpapdu传输后的任何时刻检测到链路丢失时,则gatt执行相应的第一非主动式异常事件处理;

或;

所述若通信双方在完成任一个cpapdu的任一个片段传输后的任何时刻检测到链路丢失时,则gatt执行第二主动式异常事件处理。

由于第四类错误的第一非主动式异常事件处理过程,通信设备在链路连接超时断开并重连成功后,重传当前cpapdu的所有片段。

由于应对第四类错误的第二非主动式异常事件处理过程,通信设备在链路连接超时断开并重连成功后,重传当前cpapdu的下一个片段。

所述若通信双方在完成上一个cpapdu传输后的任何时刻检测到链路丢失时,则gatt执行相应的第一非主动式异常事件处理包括:

所述工作状态数据包括上一个cpapdu中的asn值,并且在底层链路断开时:

若发送方正在经gatt层3发送cpapdu,工作状态数据还包括当前cpapdu,并在底层链路重连后重新通过gatt发送cpapdu;

若接收方正在经gatt层3接收当前cpapdu,则丢弃已接收的属于当前cpapdu的所有片段。

所述若通信双方在完成任一个cpapdu的任一个片段传输后的任何时刻检测到链路丢失时,则gatt执行相应的第二非主动式异常事件处理包括:

由于所述工作状态数据包括该cpapdu中的asn值以及sar值,并且在底层链路断开时:

若发送方正在经gatt层发送该cpapdu的下一个片段,工作状态数据还包括该cpapdu,并在底层链路重连后通过gatt继续发送该cpapdu的下一个片段;

若接收方正在经gatt层3接收该cpapdu的下一个片段,工作状态数据还包括已接收的cpapdu的部分片段,并在底层链路重连后等待接收该cpapdu的下一个片段。

同时,本发明还提供通过gatt和异常处理来适配的通信系统,所述通信系统基于主、从设备进行数据交换前,通信双方分别建立由下至上依次为底层传输层1、属性协议att层2、通用属性规范gatt层3、通用属性规范协议适配cpa层4、数据交换协议phd层5和应用层6的数据通信协议栈层级结构;

所述异常处理模块用于:

实现上述任一项的异常处理方法。

利用本发明的技术方案,或本领域的技术人员在本发明技术方案的启发下,设计出类似的技术方案,而达到上述技术效果的,均是落入本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1