通过ATT和异常处理来适配的通信方法及系统转让专利

申请号 : CN201910783902.X

文献号 : CN110493775B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 钟代笛冯海玲曹小英段小炼高雪梅

申请人 : 重庆大学

摘要 :

本发明属于数据通信技术领域,尤其涉及通过ATT和异常处理来适配的通信方法及系统,其中,包括所述具备异常处理方法的CPA层,所述异常处理方法包括:通信双方在数据交换过程中的错误或异常以及其异常处理方法,本发明解决了在通信双方在数据交换过程中或CPA数据交换过程中,往往会出现如时间间隔超时、ATT属性操作方法执行出错、ATT协议错误等错误或链路丢失等错误或异常,从而导致通信双方通讯失败的问题,具有识别了数据交换过程中产生的错误类型并进行的主动或自动的容错处理,因此,保证了数据通信过程的有效性的有益技术效果。

权利要求 :

1.通过ATT和异常处理来适配的通信方法,其特征在于,所述通信方法包括在主、从设备进行数据交换前,通信双方分别建立由下至上依次为底层传输层、属性协议ATT层、通用属性规范协议适配CPA层、数据交换协议PHD层和应用层的数据通信协议栈层级结构;

所述CPA层包括异常处理方法,所述异常处理方法包括:若通信双方在数据交换过程中,产生时间间隔超时或CC属性异常或ASN字段的值异常,则执行相应的主动式异常事件干预;

若通信双方在CPA数据交换过程中,产生ATT属性操作方法执行出错,则执行相应的主动式ATT错误干预;

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

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

2.根据权利要求1所述通信方法,其特征在于,所述若通信双方在数据交换过程中,产生时间间隔超时或CC属性异常或ASN字段的值异常,则执行相应的主动式异常事件干预包括:

若CPA层包括的用于协助CPA层管理其连接状态的四个时间间隔中任意一个时间间隔超时,或者:

若CPA连接子流程中,在CPA层连接未成功前,通信双方任一方接收到了与CC属性相关的消息,或者;

若CPA运行子流程中,通信双方任一方接收到的CPA PDU中ASN字段的值不是最近一次成功发送或接收的CPAPDU中ASN值加1;

主设备则:

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

从设备则:

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

3.根据权利要求2所述通信方法,其特征在于,所述CPA层包括的用于协助CPA层管理其连接状态的四个时间间隔;

第一时间间隔:主设备在发送ATT写请求后接收相应的ATT写响应的最长等待时间或者是从设备在发送ATT指示后接收相应的ATT确认的最长等待时间;

第二时间间隔:CPA层在接收到ATT层发送的链路连接超时错误后直到链路重连成功的最长等待时间;

第三时间间隔:在ATT层有计划断开之后,当CPA层从PHD层接收到APDU时,CPA层向ATT层发送语义为建立底层连接内部指令开始直到ATT完成重连的最长等待时间;

第四时间间隔:主设备CPA层接收到PHD层发送的语义为断开底层连接内部指令后,向从设备的IE属性写入预定值二来关闭CC属性指示功能时等待对应的写响应的最长等待时间。

4.根据权利要求3所述通信方法,其特征在于,若四个时间间隔中任意一个时间间隔的等待时间超过最长等待时间,则CPA层的工作状态即自动发生转变。

5.根据权利要求1所述通信方法,其特征在于,所述若通信双方在CPA数据交换过程中,产生ATT属性操作方法执行出错,则执行相应的主动式ATT错误干预包括:所述ATT协议错误包括认证不足、加密不足、密钥长度不够、意外错误以及写入值无效或其他相关错误;

若通信双方认证不足,则主设备可进行认证操作并重新发送ATT写请求;

若通信双方加密不足,则主设备可进行加密操作并重新发送ATT写请求;

若通信双方密钥长度不够,则主设备可更改密钥并重新执行加密操作;

若通信双方意外错误,则主设备可尝试重新发送具有原写入值的ATT写请求;

若通信双方写入值无效,则主设备可尝试写入其它的预定值。

6.根据权利要求5所述通信方法,其特征在于,如果ATT协议错误中的一项错误类型重复出现,则由应用层决定后续的错误处理操作。

7.根据权利要求1所述通信方法,其特征在于,所述若通信双方在CPA数据交换过程中,发送方向接收方发送一个CPA PDU时,原发送方可能会接收到ATT层上抛的且定义在ATT预留的应用层错误代码范围内的ATT协议错误,则执行相应的主动式CPA PDU错误干预包括:若出现语义为CPAPDU接收出错的错误,则原发送方接收到此错误后可尝试重新发送当前CPAPDU,同时原接收方丢弃出错时已接收的当前CPA PDU片段并准备接收重新发送的CPA PDU,若重新发送后还是接收到此错误,由应用层决定后续的错误处理操作;

若出现语义为CPA PDU信息部过长的错误,则由于接收方所在设备无法接收过长的APDU,会向原发送方发送此错误,原发送方接收到此错误后可尝试重新发送新的CPA PDU,同时原接收方丢弃出错时已接收的当前CPAPDU片段并准备接收重新发送的CPA PDU,若重新发送后还是接收到此错误,由应用层决定后续的错误处理操作。

8.根据权利要求1所述通信方法,其特征在于,所述若检测到链路丢失时,则执行相应的非主动式事件异常处理包括:

若检测到链路丢失时,ATT层会向CPA层发送链路连接超时错误,通信双方在完成上一个CPA PDU传输后的任何时刻,接收到链路连接超时错误时,保存工作状态数据,在等待ATT层链路重连成功后,通信双方立即进入CPA运行子流程并从当前CPA PDU开始继续执行链路断开前的通信。

9.根据权利要求8所述通信方法,其特征在于,所述若检测到链路丢失时,则执行相应的非主动式异常事件处理还包括:

所述工作状态数据包括上一个CPAPDU中的ASN值,并且在底层链路断开时:若发送方正在封装APDU,工作状态数据还包括本方PHD层发送的APDU,并在底层链路重连后重新将底层链路重连前正在封装的APDU封装为CPAPDU;

若发送方正在经ATT层发送CPA PDU,工作状态数据还包括当前CPAPDU,并在底层链路重连后重新发送CPA PDU;

若接收方正在接收当前CPA PDU,则丢弃已接收的属于当前CPA PDU的所有片段。

10.通过ATT和异常处理来适配的通信系统,其特征在于,所述通信系统基于主、从设备进行数据交换前,通信双方分别建立由下至上依次为底层传输层、属性协议ATT层、通用属性规范协议适配CPA层、数据交换协议PHD层和应用层的数据通信协议栈层级结构;

所述CPA层包括异常处理模块,所述异常处理模块用于:实现如权利要求1~权利要求9的任一项的通过ATT和异常处理来适配的通信方法。

说明书 :

通过ATT和异常处理来适配的通信方法及系统

技术领域

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

背景技术

[0002] ATT(Attribute Protocol)是由蓝牙技术联盟提出的一种适用于传感器网络应用的数据传输协议。该协议将传感器设备对外暴露的数据建模为若干带有句柄(handle)的属
性(Attribute),主设备通过多种不同功能的协议指令完成对属性的操作,从而达到与从设
备之间实现数据交换的目的;
[0003] 由于信号干扰、距离过远、协议内容出错等诸多因素,通信过程中常常会发生错误或者异常情况,为增强通信的鲁棒性和环境适应性,参与数据通信的双方宜针对各种可能
出现的异常错误情况进行监测和分析,并采取有效的措施恢复通信的正常状态,或者告知
用户并提供相应的错误细节。对于异常错误情况的处理机制是帮助通信设备管理通信状态
的有效工具之一;
[0004] 本发明基于申请号:201910765383.4,申请日:2019年08月19日,发明名称:一种依赖于ATT和指示进行适配的数据通信系统及方法;
[0005] 现有通讯方式存在在通信双方在数据交换过程中或CPA数据交换过程中,往往会出现如时间间隔超时、ATT属性操作方法执行出错、ATT协议错误等错误或链路丢失等错误
或异常,从而导致通信双方通讯失败的问题。

发明内容

[0006] 本发明提供通过ATT和异常处理来适配的通信方法及系统,以解决上述背景技术中提出了在通信双方在数据交换过程中或CPA数据交换过程中,往往会出现如时间间隔超
时、ATT属性操作方法执行出错、ATT协议错误等错误或链路丢失等错误或异常,从而导致通
信双方通讯失败的问题。
[0007] 本发明所解决的技术问题采用以下技术方案来实现:通过ATT和异常处理来适配的通信方法,所述通信方法包括在主、从设备进行数据交换前,通信双方分别建立由下至上
依次为底层传输层、属性协议ATT层、通用属性规范协议适配CPA层、数据交换协议PHD层和
应用层的数据通信协议栈层级结构;
[0008] 所述CPA层包括异常处理方法,所述异常处理方法包括:
[0009] 若通信双方在数据交换过程中,产生时间间隔超时或CC属性异常或ASN字段的值异常,则执行相应的主动式异常事件干预;
[0010] 若通信双方在CPA数据交换过程中,产生ATT属性操作方法执行出错,则执行相应的主动式ATT错误干预;
[0011] 若通信双方在CPA数据交换过程中,发送方向接收方发送一个CPA PDU时,原发送方可能会接收到ATT层上抛的且定义在ATT预留的应用层错误代码范围内的ATT协议错误,
则执行相应的主动式CPA PDU错误干预;
[0012] 若检测到链路丢失时,则执行相应的非主动式事件异常处理。
[0013] 进一步,所述若通信双方在数据交换过程中,产生时间间隔超时或CC属性异常或ASN字段的值异常,则执行相应的主动式异常事件干预包括:
[0014] 若CPA层包括的用于协助CPA层管理其连接状态的四个时间间隔中任意一个时间间隔超时,或者:
[0015] 若CPA连接子流程中,在CPA层连接未成功前,通信双方任一方接收到了与CC属性相关的消息,或者;
[0016] 若CPA运行子流程中,通信双方任一方接收到的CPA PDU中ASN字段的值不是最近一次成功发送或接收的CPA PDU中ASN值加1;
[0017] 主设备则:
[0018] 默认从设备的CC属性的指示功能已关闭,清除工作状态数据,向PHD层发送语义为底层连接已断开事件通知,并且在下一次连接之前不处理从设备发送的其它数据;
[0019] 从设备则:
[0020] 关闭CC属性的指示功能,清除工作状态数据,向PHD层发送语义为底层连接已断开事件通知,并且除连接请求外,不处理主设备发送的其它数据。
[0021] 进一步,所述CPA层包括的用于协助CPA层管理其连接状态的四个时间间隔;
[0022] 第一时间间隔:主设备在发送ATT写请求后接收相应的ATT写响应的最长等待时间或者是从设备在发送ATT指示后接收相应的ATT确认的最长等待时间;
[0023] 第二时间间隔:CPA层在接收到ATT层发送的链路连接超时错误后直到链路重连成功的最长等待时间;
[0024] 第三时间间隔:在ATT层有计划断开之后,当CPA层从PHD层接收到APDU时,CPA层向ATT层发送语义为建立底层连接内部指令开始直到ATT完成重连的最长等待时间;
[0025] 第四时间间隔:主设备CPA层接收到PHD层发送的语义为断开底层连接内部指令后,向从设备的IE属性写入预定值二来关闭CC属性指示功能时等待对应的写响应的最长等
待时间。
[0026] 进一步,若四个时间间隔中任意一个时间间隔的等待时间超过最长等待时间,则CPA层的工作状态即自动发生转变。
[0027] 进一步,所述若通信双方在CPA数据交换过程中,产生ATT属性操作方法执行出错,则执行相应的主动式ATT错误干预包括:
[0028] 所述ATT协议错误包括认证不足、加密不足、密钥长度不够、意外错误以及写入值无效或其他相关错误;
[0029] 若通信双方认证不足,则主设备可进行认证操作并重新发送ATT写请求;
[0030] 若通信双方加密不足,则主设备可进行加密操作并重新发送ATT写请求;
[0031] 若通信双方密钥长度不够,则主设备可更改密钥并重新执行加密操作;
[0032] 若通信双方意外错误,则主设备可尝试重新发送具有原写入值的ATT写请求;
[0033] 若通信双方写入值无效,则主设备可尝试写入其它的预定值;
[0034] 进一步,如果ATT协议错误中的一项错误类型重复出现,则由应用层决定后续的错误处理操作。
[0035] 进一步,所述若通信双方在CPA数据交换过程中,发送方向接收方发送一个CPA PDU时,原发送方可能会接收到ATT层上抛的且定义在ATT预留的应用层错误代码范围内的
ATT协议错误,则执行相应的主动式CPA PDU错误干预包括:
[0036] 若出现语义为CPA PDU接收出错的错误,则原发送方接收到此错误后可尝试重新发送当前CPA PDU,同时原接收方丢弃出错时已接收的当前CPA PDU片段并准备接收重新发
送的CPA PDU,若重新发送后还是接收到此错误,由应用层决定后续的错误处理操作;
[0037] 若出现语义为CPA PDU信息部过长的错误,则由于接收方所在设备无法接收过长的APDU,会向原发送方发送此错误,原发送方接收到此错误后可尝试重新发送新的CPA 
PDU,同时原接收方丢弃出错时已接收的当前CPA PDU片段并准备接收重新发送的CPA PDU,
若重新发送后还是接收到此错误,由应用层决定后续的错误处理操作。
[0038] 进一步,所述若检测到链路丢失时,则执行相应的非主动式事件异常处理包括:
[0039] 若检测到链路丢失时,ATT层会向CPA层发送链路连接超时错误,通信双方在完成上一个CPA PDU传输后的任何时刻,接收到链路连接超时错误时,保存工作状态数据,在等
待ATT层链路重连成功后,通信双方立即进入CPA运行子流程并从当前CPA PDU开始继续执
行链路断开前的通信。
[0040] 进一步,所述若检测到链路丢失时,则执行相应的非主动式异常事件处理还包括:
[0041] 所述工作状态数据包括上一个CPA PDU中的ASN值,并且在底层链路断开时:
[0042] 若发送方正在封装APDU,工作状态数据还包括本方PHD层发送的APDU,并在底层链路重连后重新将底层链路重连前正在封装的APDU封装为CPA PDU;
[0043] 若发送方正在经ATT层发送CPA PDU,工作状态数据还包括当前CPA PDU,并在底层链路重连后重新发送CPA PDU;
[0044] 若接收方正在接收当前CPA PDU,则丢弃已接收的属于当前CPA PDU的所有片段。
[0045] 同时,本发明还提供通过ATT和异常处理来适配的通信系统,所述通信系统基于主、从设备进行数据交换前,通信双方分别建立由下至上依次为底层传输层、属性协议ATT
层、通用属性规范协议适配CPA层、数据交换协议PHD层和应用层的数据通信协议栈层级结
构;
[0046] 所述CPA层包括异常处理模块,所述异常处理模块用于:
[0047] 实现上述任一项的通过ATT和异常处理来适配的通信方法。
[0048] 有益技术效果:
[0049] 本发明采用若通信双方在数据交换过程中,产生时间间隔超时或CC属性异常或ASN字段的值异常,则执行相应的主动式异常事件干预;若通信双方在CPA数据交换过程中,
产生ATT属性操作方法执行出错,则执行相应的主动式ATT错误干预;若通信双方在CPA数据
交换过程中,发送方向接收方发送一个CPA PDU时,原发送方可能会接收到ATT层上抛的且
定义在ATT预留的应用层错误代码范围内的ATT协议错误,则执行相应的主动式CPA PDU错
误干预;若检测到链路丢失时,则执行相应的非主动式事件异常处理;
[0050] 通过定义处理过程的错误以及自动处理、不需要干预的错误,对处理过程的错误通过纠错机制主动修复,对于不需要干预的错误进行自动修复,解决了在通信双方在数据
交换过程中或CPA数据交换过程中,往往会出现如时间间隔超时、ATT属性操作方法执行出
错、ATT协议错误等错误或链路丢失等错误或异常,从而导致通信双方通讯失败的问题,具
有识别了数据交换过程中产生的错误类型并进行的主动或自动的容错处理,因此,保证了
数据通信过程的有效性;
[0051] 由于本发明定义了处理过程的错误以及自动处理、不需要干预的错误,对处理过程的错误通过纠错机制主动修复,对于不需要干预的错误进行自动修复,由于本方法识别
了数据交换过程中产生的错误类型并进行的主动或自动的容错处理,因此,保证了数据通
信过程的有效性。

附图说明

[0052] 图1是本发明通过ATT和异常处理来适配的通信方法的流程图;
[0053] 图2是本发明通过ATT和异常处理来适配的通信方法的主设备执行步骤A2,通过一个写请求传输CPA PDU时接收到“CPA PDU接收出错”处理方法的时序图;
[0054] 图3是本发明通过ATT和异常处理来适配的通信方法的主设备执行步骤A2,通过多个写请求传输CPA PDU时接收到“CPA PDU接收出错”处理方法的时序图;
[0055] 图4是本发明通过ATT和异常处理来适配的通信方法的从设备执行步骤B2通过一个属性指示传输CPA PDU时接收到“CPA PDU接收出错”处理方法的时序图;
[0056] 图5是本发明通过ATT和异常处理来适配的通信方法的从设备执行步骤B2通过多个属性指示传输CPA PDU时接收到“CPA PDU接收出错”处理方法的时序图;
[0057] 图6是本发明通过ATT和异常处理来适配的通信方法的主设备执行步骤A1时,在处理底层链路超时错误时,底层重连成功的时序图;
[0058] 图7是本发明通过ATT和异常处理来适配的通信方法的主设备执行步骤A1时,在处理底层链路超时错误时,底层重连未成功的时序图;
[0059] 图8是本发明通过ATT和异常处理来适配的通信方法的主设备执行步骤A2时,在处理底层链路超时错误时,底层重连成功的时序图;
[0060] 图9是本发明通过ATT和异常处理来适配的通信方法的主设备执行步骤A2时,在处理底层链路超时错误时,底层重连未成功的时序图;
[0061] 图10是本发明通过ATT和异常处理来适配的通信方法的从设备执行步骤B1时,在处理底层链路超时错误时,底层重连成功的时序图;
[0062] 图11是本发明通过ATT和异常处理来适配的通信方法的从设备执行步骤B1时,在处理链路连接超时错误时,底层重连未成功的时序图;
[0063] 图12是本发明通过ATT和异常处理来适配的通信方法的从设备执行步骤B2时,在处理底层链路超时错误时,底层重连成功的时序图;
[0064] 图13是本发明通过ATT和异常处理来适配的通信方法的从设备执行步骤B2时,在处理链路连接超时错误时,底层重连未成功的时序图;
[0065] 图14是本发明通过ATT和异常处理来适配的通信方法的CPA数据交换过程出现错误或者出现非预期的ATT层错误时,执行主动式异常事件干预过程的时序图;
[0066] 本发明提供的技术方案在实施时具有灵活性,通过设置该技术方案中的部分参数以及阐述与之关联的较佳的应用设计,可以为本发明所要达到的技术效果提供优选方案,
下面结合附图对本发明做进一步描述:
[0067] 图中标号表示如下:
[0068] 1—底层传输层,2—ATT层,3—CPA层,4—PHD层,5—应用层;
[0069] ST401:若通信双方在数据交换过程中,产生时间间隔超时或CC属性异常或ASN字段的值异常;
[0070] ST402:则执行相应的主动式异常事件干预;
[0071] ST403:若通信双方在CPA数据交换过程中,产生ATT属性操作方法执行出错;
[0072] ST404:则执行相应的主动式ATT错误干预;
[0073] ST405:若通信双方在CPA数据交换过程中,发送方向接收方发送一个CPA PDU时,原发送方可能会接收到ATT层上抛的且定义在ATT预留的应用层错误代码范围内的ATT协议
错误;
[0074] ST406:执行相应的主动式CPA PDU错误干预;
[0075] ST407:若检测到链路丢失时;
[0076] ST408:则执行相应的非主动式事件异常处理;具体实施方式:
[0077] 实施例:
[0078] 在CPA连接子流程中,CPA连接子流程可能发生的错误及相应的错误处理包括:
[0079] 1、当CPA连接开始但未成功前,主设备或从设备接收到了与CC属性相关数据,例如,主设备通过ATT向从设备发送带有预定值一的“写请求”后(此操作标识双方准备使用
CPA进行数据通信),主设备在接收相应的“写响应”之前先接收到了从设备发送的CC属性的
指示的错误情况,该错误情况发生后,执行主动式异常事件干预过程;
[0080] 2、当主设备在等待第一时间间隔后未接收到从设备通过ATT发送的“写响应”或错误响应时,执行主动式异常事件干预过程;
[0081] 3、当主设备通过ATT向从设备发送对IE属性的“写请求”时,可能会接收到从设备发送的有关ATT层上抛的错误响应,通常这些协议错误的内容都是编码或预设的字符串,代
表着特定的语义。错误响应包括
[0082] a)认证不足。此时主设备可进行认证操作并重新发送“写请求”;
[0083] b)加密不足。此时主设备可进行加密操作并重新发送“写请求”;
[0084] c)密钥长度不够。此时主设备可更改密钥并重新执行加密操作;
[0085] d)意外错误。此时主设备可尝试重新发送一次“写请求”,“写请求”中写入值不变。
[0086] e)写入值无效。此错误代码定义在ATT预留的“应用程序错误”代码范围内,此时主设备可尝试写入其它的预定值。
[0087] f)除了以上错误外的其余错误;
[0088] 如果a)至f)中的某一个错误重复出现,由应用层决定后续的错误处理操作,例如应用层可以断开ATT层连接;
[0089] CPA运行子流程还可能发生的错误及相应的错误处理包括:
[0090] 1、当主设备或从设备接收到的CPA PDU中ASN字段的值不是最近一次成功交互(发送或接收)的CPA PDU中ASN值加1,则执行主动式异常事件干预过程。
[0091] 2、图2和图3为当主设备执行步骤A2通过ATT发送“写请求”后接收到带有语义为“CPA PDU接收出错”错误代码的响应时,则:
[0092] 当主设备执行步骤A2,即通过ATT向从设备的CC属性发送“写请求”以发送CPA PDU时,主设备可能会接收到来自ATT层上抛的错误响应以及错误原因,用于说明在ATT层中一
个指定的请求不能被完成。上抛的错误可以为“CPA PDU接收出错”,此错误定义在ATT预留
的“应用程序错误”代码范围内,用于表示在接收CPA PDU时CPA层出现错误。此时主设备可
尝试重新执行步骤A2,其中重新发送的“写请求”包含的CPA PDU保持不变,而从设备则丢弃
出错时接收的CPA PDU,并准备重新接收此CPA PDU,其中,结合图2所示的实施方法,如果传
输的第m个CPA PDU可以被完整地置于一个ATT PDU中进行传输时,主设备在接收到错误响
应后重新发送第m个CPA PDU,从设备只需丢弃出错时接收到的第m个CPA PDU,并准备重新
接收第m个CPA PDU,结合图3所示的另一种实施方法,如果传输的第m个CPA PDU被分割为多
个有序的片段依次传输,且在传输第m个CPA PDU的第n个片段发生错误时,从设备则丢弃之
前接收的该CPA PDU的所有片段,并等待重新接收第m个CPA PDU的起始片段。若主设备重新
发送“写请求”后还是收到此ATT层错误,由应用层决定后续的错误处理操作,例如应用层可
以通知用户检查蓝牙连接是否断开。
[0093] 图4和图5为当从设备执行步骤B2,即向主设备发送CC属性的“指示”后接收到带有语义为“CPA PDU接收出错”错误代码的响应时,该错误的处理方法的时序图。该错误处理与
本实施例中图2和图3描述的错误处理情况本质上相同,具体的错误处理过程可以对比参考
图2和图3的实施方法。
[0094] 3、当主设备发送“写请求”后在第一时间间隔(第一时间间隔远小于ATT规定的超时时限)内未接收到“写响应”;或者从设备发送“指示”后在第一时间间隔内未接收到“确
认”,主设备或从设备认定ATT层的连接已非正常断开,则执行主动式异常事件干预过程。
[0095] 4、CPA运行过程中,如果CPA层没有接收到己方PHD层发送的APDU时,出于节约功耗的考虑,ATT层可能会主动断开连接,如果CPA层任一方接收到己方PHD层发送的APDU时,向
已断开连接的ATT层发送“建立ATT层连接”内部指令后,已经等待第三时间间隔仍未接收到
ATT层发送的“ATT层连接已建立”事件通知时,执行主动式异常事件干预过程。
[0096] 5)链路连接超时错误。图6为主设备执行步骤A1时,底层链路超时错误处理的时序图。图8为主设备执行步骤A2时,底层链路超时错误处理的时序图。图10为从设备执行步骤
B1时,底层链路超时错误处理的时序图。图12为从设备执行步骤B2时,底层链路超时错误处
理的时序图。由于设备间距离过长、严重干扰或者电源故障等因素而导致连接的链路丢失
时,ATT层会向主设备和从设备通知链路连接超时错误。当主设备和从设备在完成第m‑1个
CPA PDU传输后的任意时刻,接收到此错误时,保存工作状态数据,并在第二时间间隔内执
行底层链路重连操作。当ATT层重连成功后立即进入CPA运行子流程并恢复底层链路丢失前
的通信状态,即从第m个CPA PDU开始继续执行CPA PDU的传输过程。
[0097] 图7为主设备执行步骤A1时,在处理底层链路超时错误时,ATT层重连出错的时序图。图9为主设备执行步骤A2时,在处理底层链路超时错误时,ATT层重连出错的时序图。图
11为从设备执行步骤B1时,在处理底层链路连接超时错误时,ATT层重连出错的时序图。图
13为从设备执行步骤B2时,在处理底层链路连接超时错误时,ATT层重连出错的时序图。若
底层链路重连超时,主设备和从设备停止重连,从设备关闭CC属性的指示功能,且主设备默
认CC属性的指示功能已被关闭,同时主设备和从设备将清除各自工作状态的数据并向各自
的PHD层发送“底层连接已断开”事件通知,且若主设备在链路丢失时正在执行步骤A1或步
骤A2,或者从设备在链路丢失时正在执行步骤B1或步骤B2,主设备或从设备通知己方PHD层
当前APDU传输失败。
[0098] 当PHD层没有数据进行传输且处于“已连接”状态的某个子状态时,CPA层任意一方向ATT层发送语义为“断开ATT层连接”内部指令,并保存工作状态数据。ATT层断开连接后,
向CPA层发送“ATT层连接已断开”事件通知。当CPA层任意一方(此处假设为原接收方)接收
到PHD层发送的APDU(假设为第m个APDU)时,如果ATT层连接已断开,则CPA层立即向ATT层发
送“建立ATT层连接”内部指令,并等待接收ATT层发送的“ATT层连接已建立”事件通知,进而
CPA层将CPA PDU(m)通过ATT定义的“写请求”发送给原发送方。
[0099] 本实施例中可能出现的错误和错误处理为:当CPA层发送“建立ATT层连接”内部指令后等待第三时间间隔仍未接收到ATT层发送的“ATT层连接已建立”事件通知,则执行主动
式异常事件干预过程。
[0100] 本实施例中,通常为了节约功耗,ATT层可能会在无数据传输时由CPA层控制ATT层主动断开连接,但是ATT层也可能保持在连接状态,因为设备重连时也会消耗一定的能量,
如果设备不断重连消耗的能量比保持连接消耗的能量更多,则保持连接的方式更好一些,
主要取决于设备的使用方法。
[0101] 在本实施例中,CPA断开子流程的触发条件是当通信双方结束PHD层的交互或者PHD层发生异常断开的时候,通信双方的PHD层由当前的状态转换到“未连接”状态,并向各
自的CPA层发送语义为“断开底层连接”的内部指令,且不等待各自的CPA层的反馈。
[0102] 本实施例中,CPA断开子流程可能发生的错误包括:
[0103] 1、当主设备发送的对IE属性的“写请求”中写入值与协议定义的预定的关闭值不一致时,从设备回复带有语义为“写入值无效”错误代码的错误响应。
[0104] 2、当从设备接收到己方PHD层发送的“断开底层连接”事件通知后,若在第四时间间隔内未接收到主设备发送的对IE属性的带有预定值二的“写请求”,从设备关闭CC属性的
指示功能,清除工作状态数据,并向己方PHD层发送“底层连接已断开”事件通知,且主设备
在第四时间间隔后默认CC属性的指示功能已关闭,清除工作状态数据,并向己方PHD层发送
“底层连接已断开”事件通知。
[0105] 3、当主设备向从设备发送带有预定值二的“写请求”后,若在第一时间间隔内未接收到从设备的“写响应”或错误响应,主设备则默认CC属性的指示功能已关闭,清除工作状
态数据,并向己方PHD层发送“底层连接已断开”事件通知。对于从设备端,在接收到带有预
定值二的“写请求”后,关闭CC属性的指示功能,如果在第一时间间隔内发送“写响应”失败,
清除工作状态数据,向己方的PHD层发送“底层连接已断开”事件通知。
[0106] 通过上述“异常处理”,由于定义了处理过程的错误以及自动处理、不需要干预的错误,对处理过程的错误通过纠错机制主动修复,对于不需要干预的错误进行自动修复,由
于本方法识别了数据交换过程中产生的错误类型并进行的主动或自动的容错处理,因此,
保证了数据通信过程的有效性。
[0107] 如图1所示,所述CPA层包括异常处理方法,所述异常处理方法包括:
[0108] 若通信双方在数据交换过程中,产生时间间隔超时或CC属性异常或ASN字段的值异常ST401,则执行相应的主动式异常事件干预ST402;
[0109] 若通信双方在CPA数据交换过程中,产生ATT属性操作方法执行出错ST403,则执行相应的主动式ATT错误干预ST404;
[0110] 若通信双方在CPA数据交换过程中,发送方向接收方发送一个CPA PDU时,原发送方可能会接收到ATT层上抛的且定义在ATT预留的应用层错误代码范围内的ATT协议错误
ST405,则执行相应的主动式CPA PDU错误干预ST406;
[0111] 若检测到链路丢失时ST407,则执行相应的非主动式事件异常处理ST408
[0112] 由于通信协议适配层(Communication Protocol Adaption,下称为CPA)层,用于低功耗、低计算资源的从设备(个人健康设备)与主设备之间的数据通信。所述数据通信的
协议栈层级结构由下至上分别为底层传输层、属性协议(Attribute Protocol,下称为ATT)
层、CPA层、个人健康设备应用层数据交换协议(下称为PHD)层和应用层。所述CPA层通过对
ATT的运行进行管理,使得依赖于可靠底层传输(connection‑oriented)的PHD能够在以无
状态(stateless)通信为特征的ATT上正常运行,不受ATT和底层传输频繁断开和重连的影
响,不受ATT的协议消息长度的限制,既充分利用ATT的低功耗特性,又能够实现通信双方在
应用层的同步交互;所述属性协议(ATT)是蓝牙低功耗(BLE)技术标准体系中的一个标准,
其特征在于:遵循该标准的从设备在与主设备进行数据交换时,按照BLE标准中所定义的属
性(Attribute)的格式提供被交换的数据。遵循该标准的主设备可以通过ATT中所定义的属
性操作方法中的“写请求”、“写响应”、“指示”、“确认”和“信息查找请求”方法对从设备提供
的属性进行操作。所述ATT由ATT数据单元(ATT PDU)和ATT数据交换过程构成。所述ATT 
PDU,是在ATT层被交换的、符合ATT定义的消息格式的数据消息,其净荷(Payload)部分的字
节长度不会超过“ATT PDU最大净荷长度”。ATT PDU的传输由底层传输层来完成。所述ATT数
据交换过程包括“ATT建立连接过程”、“ATT运行过程”和“ATT有计划断开连接过程”。所述
ATT建立连接过程是通信双方使用BLE中定义的广播事件和扫描事件建立双方之间在底层
传输层的通信连接的过程;所述ATT有计划断开连接过程是通信双方使用BLE中定义的终止
连接事件断开双方之间在底层传输层的通信连接的过程,所述CPA层的特征在于,由CPA数
据交换单元(CPA PDU)和CPA数据交换过程构成。所述CPA PDU是在CPA层被交换的、具有特
定格式的数据消息,CPA PDU作为ATT PDU中的净荷经ATT传输。通信双方只有当处于“ATT运
行过程”中时,才能运行CPA数据交换过程,该过程包括“CPA连接子流程”、“CPA运行子流程”
和“CPA断开子流程”。
[0113] 从设备和主设备这两个设备角色分别从各自所在设备的PHD层获得APDU,然后封装为CPA PDU的格式并通过ATT传输给对方;这两个设备角色还分别从对方那里接收
CPAPDU,并将其中包含的APDU提取后发给各自的PHD层,通信双方只有当处于“CPA运行子流
程”中且PHD层进入“已连接”状态之后,才能运行PHD层数据交换过程。当通信双方的PHD层
进行APDU传输时,发送方的PHD层向己方的CPA层发送APDU,通过CPA层进行数据传输。当通
信双方的PHD层结束交互或者PHD层发生异常断开的时候,通信双方的PHD层由当前的状态
转换到“未连接”状态,并向各自CPA层发送语义为“断开底层连接”内部指令,且不等待各自
的CPA层的反馈。所述应用层基于底层传输技术的低功耗特性可以根据数据传输需求设置
BLE中定义的连接间隔(Connection interval)和从设备延迟(Slave latency)等涉及功耗
的连接参数,进而控制设备间的底层链路进行重新连接的时序,所述CPA层的特征在于,通
信双方可以通过CPA来完成对ATT的使用和管理。当通信双方在PHD层处于“已连接”状态时,
通信双方可以通过CPA层断开ATT层的连接以便于减少功耗。如果应用层不打算断开PHD层
的连接,在断开ATT层的连接之前,通信双方保存CPA层和PHD层的工作状态数据;在需要重
新连接时,通信双方通过CPA层重新建立ATT层的连接,并基于先前保存的工作状态数据继
续执行PHD层数据交换过程。
[0114] 如图1所示,所述若通信双方在数据交换过程中,产生时间间隔超时或CC属性异常或ASN字段的值异常ST401,则执行相应的主动式异常事件干预ST402包括:
[0115] 若CPA层包括的用于协助CPA层管理其连接状态的四个时间间隔中任意一个时间间隔超时,或者:
[0116] 若CPA连接子流程中,在CPA层连接未成功前,通信双方任一方接收到了与CC属性相关的消息,或者;
[0117] 若CPA运行子流程中,通信双方任一方接收到的CPA PDU中ASN字段的值不是最近一次成功发送或接收的CPA PDU中ASN值加1;
[0118] 主设备则:
[0119] 默认从设备的CC属性的指示功能已关闭,清除工作状态数据,向PHD层发送语义为底层连接已断开事件通知,并且在下一次连接之前不处理从设备发送的其它数据;
[0120] 从设备则:
[0121] 关闭CC属性的指示功能,清除工作状态数据,向PHD层发送语义为底层连接已断开事件通知,并且除连接请求外,不处理主设备发送的其它数据。
[0122] 由于CPA层数据交换过程中,产生的错误和进行的容错处理包括:
[0123] CPA连接子流程中,当CPA连接未成功前,主设备或从设备接收到了与CC属性相关的消息后,执行主动式异常事件干预过程。
[0124] CPA运行子流程中,如果主设备或从设备接收到的CPA PDU中ASN字段的值不是最近一次成功交互(发送或接收)的CPA PDU中ASN值加1,执行主动式异常事件干预过程。
[0125] CPA数据交换过程中,当从设备通过ATT发送“指示”后,已等待第一时间间隔且未接收到相应的“确认”时,从设备认定ATT层的连接已非正常断开,执行主动式异常事件干预
过程;或主设备通过ATT发送“写请求”后,已等待第一时间间隔且未接收到相应的“写响应”
时,主设备认定ATT层的连接已非正常断开,执行主动式异常事件干预过程。
[0126] CPA运行子流程中,如果CPA层接收到来自PHD层的APDU时,向已断开连接的ATT层发送语义为“建立ATT层连接”内部指令后,已等待第三时间间隔且未接收到ATT层发送的
“ATT层连接已建立”事件通知时,即执行主动式异常事件干预过程。
[0127] CPA断开子流程中,如果从设备已等待第四时间间隔且未接收到主设备通过ATT发送的带有预定值二的“写请求”时,或者主设备在第四时间间隔内通过ATT发送带有预定值
二的“写请求”失败后,执行主动式异常事件干预过程。
[0128] 所述CPA数据交换过程还包括用于协助CPA层管理其连接状态的四个时间间隔:
[0129] 第一时间间隔是主设备在发送“写请求”后接收相应的“写响应”的最长等待时间;或者是从设备在发送“指示”后接收相应的“确认”的最长等待时间;
[0130] 第二时间间隔是CPA层在接收到ATT层发送的链路连接超时错误后执行链路重连的最长等待时间;
[0131] 第三时间间隔是在ATT层主动断开之后(通常是为了降低功耗),当CPA层从PHD层接收到APDU时,CPA层向ATT层发送“建立底层连接”内部指令开始并等待其完成重连的最长
等待时间;
[0132] 第四时间间隔是CPA层接收到PHD层发送的语义为“断开底层连接”内部指令后,主设备向从设备的IE属性写入预定值二来关闭CC属性的指示功能的最长等待时间;或者CPA
层接收到PHD层发送的“断开底层连接”内部指令后,从设备等待从主设备接收带有预定值
二的“写请求”的最长等待时间。
[0133] 当上述某一个环节中的等待时间超过所述时间间隔时,CPA层的工作状态即自动发生转变。
[0134] 由于ATT层产生的错误为ATT错误。在CPA连接子流程中,当主设备通过ATT向从设备发送对IE属性的“写请求”时,可能接收到从设备通过ATT发送的ATT层上抛的协议错误,
其语义包括但不限于以下情形:
[0135] 一是认证不足。此时主设备可进行认证操作并重新发送“写请求”;
[0136] 二是加密不足。此时主设备可进行加密操作并重新发送“写请求”;
[0137] 三是密钥长度不够。此时主设备可更改密钥并重新执行加密操作;
[0138] 四是意外错误。此时主设备可尝试重新发送“写请求”,“写请求”中的写入值不变;
[0139] 五是写入值无效。此时主设备可尝试写入其它的预定值;
[0140] 六是除了以上错误外的其他错误。如果出现六,或者一至五中的某一个错误重复出现,由应用层决定后续的错误处理操作。
[0141] 所述若通信双方在CPA数据交换过程中,发送方向接收方发送一个CPA PDU时,原发送方可能会接收到ATT层上抛的且定义在ATT预留的应用层错误代码范围内的ATT协议错
误ST405,则执行相应的主动式CPA PDU错误干预ST406包括:
[0142] 若出现语义为CPA PDU接收出错的错误,则原发送方接收到此错误后可尝试重新发送当前CPA PDU,同时原接收方丢弃出错时已接收的当前CPA PDU片段并准备接收重新发
送的CPA PDU,若重新发送后还是接收到此错误,由应用层决定后续的错误处理操作;
[0143] 若出现语义为CPA PDU信息部过长的错误,则由于接收方所在设备无法接收过长的APDU,会向原发送方发送此错误,原发送方接收到此错误后可尝试重新发送新的CPA 
PDU,同时原接收方丢弃出错时已接收的当前CPA PDU片段并准备接收重新发送的CPA PDU,
若重新发送后还是接收到此错误,由应用层决定后续的错误处理操作。
[0144] 所述若检测到链路丢失时ST407,则执行相应的非主动式事件异常处理ST408包括:
[0145] 若检测到链路丢失时ST407,ATT层会向CPA层发送链路连接超时错误,通信双方在完成上一个CPA PDU传输后的任何时刻,接收到链路连接超时错误时,保存工作状态数据,
在等待ATT层链路重连成功后,通信双方立即进入CPA运行子流程并从当前CPA PDU开始继
续执行链路断开前的通信,其包括:
[0146] 所述工作状态数据包括上一个CPA PDU中的ASN值,并且在底层链路断开时:
[0147] 若发送方正在封装APDU,工作状态数据还包括本方PHD层发送的APDU,并在底层链路重连后重新将底层链路重连前正在封装的APDU封装为CPA PDU;
[0148] 若发送方正在经ATT层发送CPA PDU,工作状态数据还包括当前CPA PDU,并在底层链路重连后重新发送CPA PDU;
[0149] 若接收方正在接收当前CPA PDU,则丢弃已接收的属于当前CPA PDU的所有片段。
[0150] 利用本发明的技术方案,或本领域的技术人员在本发明技术方案的启发下,设计出类似的技术方案,而达到上述技术效果的,均是落入本发明的保护范围。