一种医疗设备数据安全传输系统的制作方法

文档序号:15700812发布日期:2018-10-19 19:48阅读:320来源:国知局

本发明属于医疗设备通信技术领域,具体涉及一种医疗设备数据安全传输系统。



背景技术:

个人健康设备ISO/IEEE11073标准(11073PHD)旨在确保个人健康设备和终端设备(如手机,平板电脑)之间的互操作性。11073PHD定义了个人健康设备和终端设备间的通讯规范,使得通信双方能够无缝连接,而不受原先的数据格式的限制。它包含两部分协议:11073-20601和11073-104zz。前者被称为最优化交换协议,它建立了统一的数据结构模型,通信双方只要符合这个数据结构模型就能够相互通信。11073-104zz是描述个人健康设备组织形式的协议。其中zz代表1-99中的任何一个数,比如11073-10407描述了血压计的组织形式,11073-10408描述了体温计的组织形式。最优化交换协议是11073协议的核心部分,涉及到了个人健康设备和智能终端之间的测量数据交换就是通过这个协议来实现的。

当前的11073-20601最优化交换协议并没有提供某种方法来保证健康信息数据的安全交换,而是把安全传输的任务交给一种理想状态下的传输通道。特别是对于无线传输,存在很多不确定因素,比如在蓝牙通信中,入侵者伪装成合法用户来访问合法资源或者不停发送连接请求来耗尽设备资源。个人医疗设备和终端设备传输过程中,很多情况下不同用户的个人健康数据是透明的。11073PHD标准的另一个安全问题是无法识别到从个人健康设备搜集到的健康数据是哪个人的,这可能受到不同类型的攻击甚至出现严重的问题,比如影响一个人的诊断结果,服用错误的药物配方。这就需要一个机制在保留原有标准互操作特性的情况下进一步保证医疗健康数据的安全传输和控制。



技术实现要素:

本发明的发明目的是:为了解决现有技术中存在的以上问题,本发明提出了一种医疗设备数据安全传输系统。

本发明的技术方案是:一种医疗设备数据安全传输系统,包括设备端和管理端,所述管理端通过安全扩展协议与所述设备端进行关联认证和数据传输;所述管理端包括11073协议模块、Hservice模块和Hdisplay模块;

所述11073协议模块包括安全通信模型和数据处理模块;所述安全通信模型用于采用协议数据单元进行设备端和管理端的数据交互,包括关联认证阶段、配置阶段和测量数据传输阶段,同时采用确定状态的有限自动状态机控制设备端和管理端状态转换;所述数据处理模块用于获取协议数据单元后根据协议数据单元的类型建立相应的对象,并根据协议数据单元的属性排放顺序获取内容;

所述Hservice模块用于调用11073协议模块改变设备端状态,修改设备端信息及发送JSON格式的测量数据至Hdisplay模块;

所述Hdisplay模块用于将Hservice模块发送的JSON格式的测量数据解析为个人健康数据并进行显示和保存。

进一步地,所述协议数据单元包括关联请求协议数据单元、关联响应协议数据单元、连接释放协议数据单元、释放响应协议数据单元、连接中断协议数据单元、数据演示数据单元协议数据单元、共享密钥更新请求协议数据单元、共享密钥更新响应协议数据单元、挑战认证协议数据单元和挑战响应协议数据单元。

进一步地,所述共享密钥更新请求协议数据单元用于将更新后的主密钥和对应证书从管理端发送至设备端;所述共享密钥更新响应协议数据单元用于对设备端作出接收或拒绝共享密钥更新请求的响应。

进一步地,所述挑战认证协议数据单元用于在关联认证阶段从管理端向设备端发送挑战,等待后续认证;挑战响应协议数据单元用于对挑战进行响应,实现管理端和设备端的通信认证。

进一步地,所述关联认证阶段具体为对设备端和管理端进行认证并产生会话密钥,利用会话密钥对配置阶段和测量数据传输阶段的会话消息进行加密处理。

进一步地,所述配置阶段具体为设备端将配置id列表发送至管理端,管理端对配置id进行识别;当管理端不能识别所有配置id时,设备端将配置信息列表发送至管理端,管理端对配置信息进行识别;当管理端不能识别配置信息时,管理端发送连接释放协议数据单元。

进一步地,所述测量数据传输阶段具体为管理端采用时限模式发起测量传输请求消息,设备端返回响应消息确认请求的结果状态,设备端使用事件报告服务不停发送包含测量数据的事件报告,直到数据请求中指定的时间已经过期或者收到一个阻止请求终止传输;传输数据时采用关联认证阶段生成的会话密钥对测量数据进行加密,同时设备端对无法传输的测量数据加密存储,管理端对接收到的测量数据加密存储。

进一步地,所述有限自动状态机的状态包括Disconnected连接状态、Connected连接状态、Unassociated状态、Associating关联状态、Associated状态、Operating数据传输状态、Configuring配置状态、Disassociating状态和Authenticating认证状态。

进一步地,所述Authenticating认证状态包括对共享密钥、设备制造商、管理端、设备端进行认证。

进一步地,所述数据处理模块通过映射测量数据组织形式进行解析,对协议数据单元中前两个字段进行检测判断该数据是否包含测量数据,再将测量数据从中提取出来,根据测量数据的count字段分配内存,然后循环遍历测量数据,将测量数据放入链表中;若测量数据是复杂类数据,则再次遍历复杂类型数组,直到遍历完所有测量数据,将测量数据转换成json格式的字符串。

本发明的有益效果是:本发明采用一种安全扩展的11073最优化交换协议,使得在个人健康设备与终端设备通信时能够保证健康数据的安全,同时尽量少地影响原有标准的互操作性;安全扩展的11073最优化交换协议具有良好的安全性和较小的延迟。

附图说明

图1是本发明的医疗设备数据安全传输系统的结构示意图;

图2是本发明实施例中关联过程示意图;

图3是本发明实施例中配置过程示意图;

图4是本发明实施例中设备端和管理端状态转移示意图;

图5是本发明实施例中测量数据转换过程示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

如图1所示,为本发明的医疗设备数据安全传输系统的结构示意图。一种医疗设备数据安全传输系统,包括设备端和管理端,所述管理端通过安全扩展协议与所述设备端进行关联认证和数据传输;所述管理端包括11073协议模块、Hservice模块和Hdisplay模块;

所述11073协议模块包括安全通信模型和数据处理模块;所述安全通信模型用于采用协议数据单元进行设备端和管理端的数据交互,包括关联认证阶段、配置阶段和测量数据传输阶段,同时采用确定状态的有限自动状态机控制设备端和管理端状态转换;所述数据处理模块用于获取协议数据单元后根据协议数据单元的类型建立相应的对象,并根据协议数据单元的属性排放顺序获取内容;

所述Hservice模块用于调用11073协议模块改变设备端状态,修改设备端信息及发送JSON格式的测量数据至Hdisplay模块;

所述Hdisplay模块用于将Hservice模块发送的JSON格式的测量数据解析为个人健康数据并进行显示和保存。

本发明的设备端为个人健康设备,包括血压计,血糖仪,体重计等。管理端终端设备,即Android端,主要包括三个大的模块:11073协议模块,Hservice模块和Hdisplay模块。11073协议模块是在原有11073最优化协议标准协议的基础上对其进行修改使得该协议具备安全防护功能,安全扩展后的11073最优化交换协议能够对通信双方互相认证,然后根据双方挑战和主密钥共同生成一次性会话密钥,后续若需要则使用该密钥进行加密。由于11073协议位于传输层之上,因此安全扩展后的协议不需要依赖传输层的保护,适用于各种蓝牙,wifi等各种通信方式。Hservice模块通过JNI调用11073协议模块与个人健康设备进行交互,并通过11073协议模块的数据解析处理部分将传输层传来的APDU数据流转化为JSON格式数据,供Hdisplay模块使用。Hdisplay模块对JSON数据处理后,进行显示和加密存储。

在本发明的一个可选实施例中,上述安全通信模型采用相应的应用程序协议数据单元(APDU,Application protocol data unit)实现设备端和管理端的数据交互。协议数据单元包括关联请求协议数据单元、关联响应协议数据单元、连接释放协议数据单元、释放响应协议数据单元、连接中断协议数据单元、数据演示数据单元协议数据单元、共享密钥更新请求协议数据单元、共享密钥更新响应协议数据单元、挑战认证协议数据单元和挑战响应协议数据单元。

关联请求协议数据单元(AarqApdu):在关联认证阶段时,设备端生成一个新的挑战cr1,并将该挑战共享密钥更新请求和设备ID号连接起来,签名处理。将该签名附在关联请求APDU中,发送给管理端,试图请求验证和连接。

关联响应协议数据单元(AareApdu):关联认证中的认证失败信息都是通过该单元发送的。此外,当关联认证成功的时候,管理端会通过该数据单元通知设备端。

连接释放协议数据单元(RlrqApdu):当测量数据传送完毕或连接后时不能识别PersonID时,通过该数据单元请求释放连接。

释放响应协议数据单元(RlreApdu):表明关联释放请求已经被同意。

连接中断协议数据单元(AbrtApdu):当管理器发生严重的故障时,通过该数据单元通知并释放连接。

数据演示数据单元协议数据单元(PrstApdu):测量数据传输单元。

共享密钥更新请求协议数据单元(RerqApdu):管理端将更新后的主密钥发送给设备端,请求更新。

共享密钥更新响应协议数据单元(RereApdu):关联认证阶段设备端接收到RerqApdu后,验证一系列信息,然后用改数据单元同意或拒绝响应管理端。

挑战认证协议数据单元(AucApdu):关联认证阶段管理端向设备端发送挑战,等待后续验证。

挑战响应协议数据单元(AurApdu):这是一个双向连接的数据单元,对AucApdu的响应,以便通信双方相互验证。

这十种APDU共同完成了设备端和管理端的连接建立,配对过程,认证过程,异常处理、测量数据交换过程和连接释放过程。前五种APDU和后四种APDU主要用于设备端和管理端的交互和控制,PrstApdu用于测量数据的传输。后四种APDU用于关联认证过程,RerqApdu和RereApdu为共享密钥的更新请求和响应消息。前者用于管理端发送给设备端,包含更新后的主密钥[k,k_old]以及相关证书。后者用于设备端响应,接受或者拒绝密钥更新请求。AucApdu和AurApdu用于挑战认证阶段,AucApdu对应上一张。

当通信双方通过关联认证阶段后,配置阶段配置信息的传输和测量数据传输阶段数据的传输都是通过PrstApdu数据单元进行传输的。

PrstApdu为服务模型中的一系列服务提供支持(Get,Set,事件报告服务和Action服务),它是通信模型和服务模型间交流的基带。PrstApdu中包含了一个DATA-apdu结构,具体为:

typedef struct DATA_apdu{

InvokeIDType invoke_id;/*服务请求调用id*/

Data_apdu_message message;/*数据消息载体,包含请求参数与返回结果*/

}DATA_apdu;

Invoke_id是服务请求调用的id,是一个无符号整型。

Data_apdu_message是数据消息的载体,包含了服务请求的参数和返回结果,所以该结构既可以表示请求服务也可以表示响应服务的结果。

Data_apdu_message的结构具体为:

typedef struct Data_apdu_message{

DATA_apdu_choice choice;/*服务类型标识号*/

intu16length;/*服务消息长度*/

union{

EventReportArgumentSimple roiv_cmipEventReport;/*事件报告*/

GetArgumentSimple roiv_cmipGet;/*GET服务请求参数*/

GetResultSimple rors_cmipGet;/*GET返回结果*/

SetArgumentSimple roiv_cmipSet;/*SET服务请求参数*/

ActionArgumentSimple roiv_cmipAction;/*ACTION服务请求参数*/

ErrorResult roer;/*出错结果*/

RejectResult rorj;/*拒绝服务结果*/

……

}u;

}Data_apdu_message;

Data_apdu_message包含了GET,SET,EVENT REPORT和ACTION等服务的请求参数和返回结果。当上述服务出现错误时ErrorResult参数会给予指示。此外,它还包含了拒绝服务时的结果。

在本发明的一个可选实施例中,上述安全通信模型的通信过程包括关联认证阶段、配置阶段和测量数据传输阶段。

如图2所示,为本发明实施例中关联过程示意图。关联过程允许设备端和管理在一个公用数据协议和一组通用的操作参数上达成一致,以便后续传输测量数据。关联和认证过程为通信双方提供认证并产生会话密钥。后续的配置阶段和测量数据传输阶段都需要该会话密钥来加密消息。该过程对应通信模型中的Associating状态,具体为对设备端和管理端进行认证并产生会话密钥,利用会话密钥对配置阶段和测量数据传输阶段的会话消息进行加密处理,包括以下步骤:

1.设备端生成一个新的挑战cr1,令x=[k,systemID,cr1],其中systemID为设备端标识号,k是共享密钥,用于后续产生会话密钥。使用PriSA签名生成DS(x,A),以启用进一步验证并将其发送给管理端。DS(x,A)表示实体A为x的签名。

2.管理端会查阅其关联表中最近一定的时间t内是否曾与该Agent有过关联。如果是,管理端知道共享密钥k并转移到步骤8。如果M数据段中包含更新某个密钥或的请求,则顺序执行后续步骤。

3.令y=[CEAd,CSAd,x],其中CEAd为管理员加密证书,CSAd为签名证书。将y与管理员指纹连接,要获得指纹,管理员需要手动引入他/她的私人签名密钥PriSAd的密码。这里用FP(D,X)=[ID(X),DS(D,PriSX)]表示由实体X执行的消息帧D的指纹,它包括X的签名DS及其身份标识(ID)。那么y的指纹为FP(y,Ad)。管理端向设备制造商发送一个消息,它包含y和y的指纹Fp(y,Ad)。

4.设备制造商验证通过y的指纹和x的签名,并且查看CSAd对应于该设备端的买方,则证明了管理员的身份,执行后续步骤。若验证过程中任意一方面有问题则通知管理端并说明原因。

5.设备制造商发送其证书CSMf,由制造商签署的设备端人证书CSA和CEA以及k。如果x中包含更新请求(预计的更新请求发生的周期为1-3年),旧的和新的密钥和相关证书请求将被附加并进行数字签名。整个框架使用相应的管理员公共加密密钥PubEAd进行加密。用公式表示就是

PubEAd{[CSMf,CSA,CEA,k_old,k],DS([k_old,k],Mf)}。设备制造商将这条消息发送给管理端。

6.通过使用PriEAd解密消息。然后,通过证书注销列表CRL或在线证书状态协议OCSP验证证书。如果它们无效,则拒绝连接,并指示管理员联系设备端商的制造商。否则,通过证书获得PubMf,PubSA和PubEA。

7.使用PubMf来验证签名DS([k_old,k],Mf),两者都在上一步中解密。如果签名是有效的,获得共享密钥k。管理端如果不能解密或不能验证签名,向设备制造商通知并说明原因。

8.使用PubSA来验证x的签名。如果有效,获得设备端生成的挑战cr1并产生自己的新挑战cr2。若不能验证签名,则通知设备端。

9.如果x包含更新请求,管理端则发送PubEA{[k_old,k,DS([k_old,k],Mf)]}到设备端。

10.设备端使用其私有解密密钥PriEA解密接收到的消息。接下来,检查消息的签名是否有效,旧的共享密钥k_old是否正确。若签名无效或旧的密钥不正确,则通知管理端。

11.设备端通过发送给管理端ok=h([k_old,k])来表明接受或拒绝密钥的更新。否则,销毁旧密钥/证书,并向管理员发送警告消息。

12.管理端向设备端发送由PubEA{cr2}和h(cr1+h(cr2)+h(k))组成的挑战认证帧。

13.设备端使用PriEA解密cr2。使用它,cr1和k检查接收到的h(cr1+h(cr2)+h(k))是否有效。如果验证成功,则验证了管理端,表明管理端知道共享密钥k。

14.设备端计算h(h(cr1)+cr2+h(k))并将其发送给管理端。

15.如果管理端收到的消息验证成功,则对设备端进行了验证。

16.管理端通过发送帧ok=h(cr1+cr2+h(k))来确认设备端的身份验证。

17.设备端和管理端推导用于加密的会话密钥,S=h(k+cr1)+cr2,以及认证密钥SA=h(k+cr2)+cr1。这两个密钥用于后续操作。

当设备端想要更新共享密钥时,关联过程涉及到管理端与设备制造商的通信。

如图3所示,为本发明实施例中配置过程示意图。设备端接收到管理端发来的关联响应APDU中若包含accept-unknown-config字段将触发设备端进入配置状态。配置的过程也是对对象实例的句柄赋值的过程。如果管理器知道设备端配置,它也知道句柄的值。这意味着标准配置,ISO/IEEE 11073-104zz中对各种标准设备配置定义了固定的句柄值,以便能够识别11073-104zz标准配置。

配置过程中1073PHD中设备端发送它支持的配置,该配置包含设备端的域信息模型中的各个对象。不同的设备可能支持多种配置(如血压计,血糖仪)若管理端支持该配置,则接受配对。若不支持则通知设备端,设备端会继续发送其它配置,知道管理端支持一种配置或所有配置都不支持为止。

配置阶段具体为设备端会发送它的配置id列表,若管理端不能识别所有的配置id,设备端将会它的配置信息列表发送给管理端,该配置信息列表中包含包含设备中除了MDS对象以外的所有对象的静态属性(如对象命名标识,数据测量单位等),若管理端还是不能识别配置信息,则设备端发送关联释放APDU。配置信息中的数据非常多,为了减少配置阶段的通信量,管理端会将曾经识别的配置信息记录下来,并记录配置id。再次通信时设备端只需要发送配置id即可。只有当设备端配置id发生变化时,才需要重新发送配置信息。

设备端可能支持多个配置。在这种情况下,设备端应该从配置列表中的首选配置开始发送其可用的配置。如果管理器接受配置,它将响应一个包含accept字段的配置消息,并且管理器和设备端都将移动到操作状态。如果管理器不接受配置,它将返回一个包含accept-unknown-config的配置响应。设备端在收到该响应时,将一个一个发送它支持的的配置。这个过程会一直重复,直到设备端尝试完所有配置。然后设备端发送一个关联释放消息,表明它无法继续下去。

在发送设备配置id时,等待管理端响应消息的超时时间为5秒。若该时间内没有收到配置响应消息就发送关联释放请求来中止连接。

如果设备端符合标准配置,则应使用ISO/IEEE 11073-104zz专门定义的dev-config-id标准值,该值在config-start和config-end之间。当设备端提交该dev-config-id标准值时,配置消息也不需要包含配置信息,只需要标准配置id即可,管理端会自动识别标准配置。

具有非标准配置的设备端应该在extend-config-start和extend-config-end之间的范围内生成dev-config-id值。若如果在配置成功进入测量数据传输状态后,设备端更改了它的配置,使它不再支持旧的配置,或者确定应该使用新的配置,那么它将通过发送一个包含配置更改原因的关联释放消息来关闭现有的关联。如果新配置是一个新的扩展配置,设备端将分配一个新的配置ID。下一次设备端连接的时候,它会按照前面描述的优先级顺序依次通过每个配置与管理器进行关联。

当设备端接收到来自管理器的接受配置响应时,它将转换到测量数据传输状态。如果设备端接收到来自管理器的unsupported-config响应,它将向管理器发送下一个配置,直到没有其他配置可用时,它将发送一个关联释放请求消息,说明其原因是no-more-configurations并进入Unassociated状态。

配置过程包括以下步骤:

18.发送用S加密的配置帧Fi,以建立测量的进一步传输。该帧与哈希消息认证码HMAC(S{Fi},SA)连接,取决于加密帧和认证SA的会话密钥。将得到的帧[S{Fi},HMAC(S{Fi},SA)]简化表示为HD(Fi,S,SA)。

19.使用SA来验证Fi的HMAC。如果它是有效的,那么管理者用S解密得到F1解释它。这个过程与上一步相反,表示为HE(HD(Fi,S,SA))。

20.发送帧HD(Fj,S,SA)以继续配置过程。

21.使用SA来验证Fj的HMAC。步骤25-28可以重复几次,直到所有配置已被交换。

测量数据传输阶段采用管理端启动的传输。设备端接收到传输测量数据的请求并不是它执行测量的命令,而是它将传输可用的任何测量数据。

当管理端希望发起测量传输请求时,它将发送一个DataApdu结构,来确认请求,该结构包含ActionArgumentSimple,ActionArgumentSimple中包含一个DataRequest信息。DataRequest可能是一个开始请求或一个停止请求,由data-req-mode中的的data-req-start-stop位决定的。

测量数据传输阶段具体为管理端采用时限模式发起测量传输请求消息,管理端可以用stop request来停止一个时间段或没有时间周期的测量数据传输。当使用计时模式时,如果管理人员想要延长设备端被允许发送数据的时间。管理器使用时限模式,使设备端能够在请求的时间段内发送收集到的任何数据。当设备端接收到来自管理器的DataRequest消息时,设备端应发送一个DataResponse消息,确认请求的结果状态(DataReqResult),但无需在响应消息中传输任何测量数据。如果DataReqResult值为data-req-result-no-error,设备端应当使用事件报告服务不停发送包含测量数据的事件报告,直到数据请求中指定的时间已经过期或者收到一个阻止请求来终止设备端和管理端之间的关系。

如果管理器想要延长时间周期,则管理端在data-req-mode中设置data-req-continuation位,并将data-req-time设置为分配给设备端的时间量,以便继续传输。

如果管理端接收到一个不存在的data-req-id的continuation命令,设备端将返回data-req-result-invalid-req-id拒绝。例如,计时器在接收延续命令之前失效,则data-req-id停止并被删除。

在时限模式下,如果data-req-time被设置为0,则设备端应确认请求,并且立即将当前可用的任何数据传输到事件报告中,然后停止。时限模式允许设备端使用已确认或未确认的事件报告消息。本发明使用确认的事件报告,以确保设备端在从本地缓存删除之前,管理器已经接收到数据。

设备端在接收到已启用的data-req-id的停止数据请求后,应立即停止发送该data-req-id的事件报告。

测量数据传输过程包括以下步骤:

22.通过设备端进行他/她的测量“d”。

23.如果设备测量数据时并未与管理端连接或因某种原因断开连接,则生成用于存储的对称密钥StAi,计算StAi{d}和PbEM{StAi}并存储在PM-Store中。接下来,适当擦除存储平面d和StAi的变量和缓冲区,并返回步骤1.

24.设备端发送HD(d,S,SA)给管理端。

25.管理端计算HE(HD(d,S,SA))得到测量数据d。

26.设备端d的安全标准存储:创建用于加密d的对称密钥StMi,并存储StMi{d}。

在本发明的一个可选实施例中,上述安全通信模型采用确定状态的有限自动状态机控制设备端和管理端状态转换。有限自动状态机的状态包括Disconnected为连接状态、Connected连接状态、Unassociated状态、Associating关联状态、Associated状态、Operating数据传输状态、Configuring配置状态、Disassociating状态和Authenticating认证状态。

Disconnected为连接状态:当一个agent启动时,假设它从断开的状态开始,这表明agent和manager之间的传输连接还没有开始建立。在建立传输连接后,如果传输连接故意终止或无意地断开连接,则可以返回到断开连接的状态。当主设备与从设备连接建立后退出该状态。

Connected连接状态:除了Disconnected状态,其它状态都是Connected的子状态。当传输层指示设备端和管理器之间已建立连接时,设备端和管理器将进入连接状态。设备端和管理器都从它们自己的传输层接收连接指示,此时不发生应用层通信。在初始进入连接状态时,设备端和管理器都从Unassociated状态开始,即连接状态的子状态。当数据传输完毕,传输层断开连接时,退出该状态。当然传输过程中可能会意外断开(例如,无线传输可能会被移出范围,或者电缆连接的接口可能会被提前移除)。在这些情况下,应该提醒应用层断开。然后,设备端和管理器将负责重置到断开连接的状态。这适用于连接状态和所有子状态。

Unassociated状态:在没有一个应用层与manager关联的情况下,设备端处于Unassociated状态。这种情况可能发生于以下任何一种情况:一种新的连接(connection)刚刚建立起来、manager拒绝关联的请求和在connected状态下,一方释放或异常中止一个关联。当agent尝试与manager关联时,向Manager发送AARQ_apdu连接请求,它进入到Associating状态,此时Manager收到消息,进入Associating状态。

Associating关联状态:当agent,尝试与manager关联时,向Manager发送AARQ_apdu连接请求,它进入到Associating状态。如果一个关联请求失败了,但是可能有其它可替代的关联参数,那么设备端可能尝试联系每个新的关联参数。在超时的情况下,agent将试图联系直到最大重试计数。当管理端发送AARE_aPubd关联响应时,管理端退出Associating状态。设备端接收到关联响应时,设备端退出Associating状态。

Associated状态:Operating和Configuring的父状态。当manager决定agent和manager共享同一通用版本的协议时,其向agent发送关联响应,并向设备端发送“accepted”参数。当agent接收到此消息时,它将移动到Associated状态。在agent发送或接收到该关联的释放或中止请求之前,它仍然处于这个状态。进入关联状态时的初始子状态取决于manager是否对关联请求作出响应,并指示agent的配置是否被识别。

Operating数据传输状态:当manager识别出一个agent的配置时,它会向agent提供一个"accepted"参数来响应,从而使agent进入Operating状态。或者,如果配置不被识别,配置就会被丢弃。如果配置被接受,则agent进入Operating状态。数据传送完毕,向设备端发送连接释放请求或接收到从设备的释放请求时,退出该状态。

Configuring配置状态:当manager不能识别agent的配置时,它通过发送一个响应来通知agent,该响应带有一个“accepted unknown-config”参数,以指示接收到了请求,但不能识别配置,需要agent重新发送配置参数。此时agent仍然处于配置状态,直到传输配置信息,并且manager确认了配置后,进入Operating状态。

Disassociating状态:当agent决定它应该释放当前的关联时,agent将移动到Disassociating状态,并向manager发送一个关联释放请求。若关联释放请求在一定时间内得不到响应,agent就会发送assocAbort信息,进入未关联状态。

Authenticating认证状态:认证状态为Associating子状态,包括对共享密钥、设备制造商、管理端、设备端的认证。关联过程中,需要认证后才能产生会话密钥,然后进行后续操作。任何一项认证不能通过时,发送连接释放请求并退出状态。如图4所示,为本发明实施例中设备端和管理端状态转移示意图;其中实线表示设备端状态转移,虚线表示管理端状态转移。

有限自动状态机的状态转移条件为:

1.传输层建立连接

当传输表示一个连接已经建立时,就会发生传输连接指示转换。

2.assocReq关联请求

每当设备端确定它希望尝试与管理器关联时,它会发送该请求,在经过一系列认证后转换到关联状态。

3.RxAssocRsp(accepted or accepted-unknown-config

当设备端试图与管理器关联时,它会发送一个关联请求消息,并等待来自管理器的关联响应。当它获得关联的批准时,设备端将转换到关联状态。

4.RxAssocRsp(rejected)

如果管理器在收到关联请求后确定它不能与设备端关联,则它会发送一个关联响应,并将被拒绝的关联代码(无论是永久的还是临时的)发送给设备端,以使设备端返回到未关联的状态。

5.RxAssocRelReq/TxAssocRelRsp

当设备端与一个管理器关联并接收一个关联释放请求时,设备端将响应并转换到Unassociated状态。

6.RxAssocAbort or TxAssocAbort

当设备端和管理器处于associating,associated,or disassociating,状态中的任何时候,设备端可以发送或接收一个关联中止消息。当此事件发生时,设备端将从其当前状态转移到Unassociated状态。如果设备端在associated状态,它可以发送一个关联中止消息,通知管理器发生了严重的故障。这条消息应该是释放连接最后的手段,一般它更倾向于发送一个关联释放请求,以正常的程序移动到Unassociated的状态。

7.assocRelReq

当设备端决定停止关联时,它将转换到Disassociating状态并发送一个关联释放请求。这个转换是在正常流程序列中,如果设备端的配置已经改变,并且要求设备端释放关联,设备端将说明配置改变原因。无论哪种方式,下一次设备端关联时,它将指示在关联请求中使用的配置,并且管理器确定它是否知道配置。

8.RxAssocRelRsp

这个转换指示关联释放请求已经被同意。

9.传输层断开连接

在任何时候,设备端或管理器都可以终止传输连接。或者故障条件导致连接丢失。当表示连接已经是过去时。

根据状态转移条件说明,将以上转移条件作为状态机触发事件。

在本发明的一个可选实施例中,上述测量数据传输是通过EventReport服务的形式传送过来的。主要分为两种,一种是MDS类型数据,一种是Numeric类型数据。设备端的数据封装在优化交换协议中的EventReport中,而EventReport实际上是prst_APDU类型。

本发明使用固定组织来发送测量数据,即在设备端使用SET服务在Scanner类中的Scan-Handle-Attr-Val-Map属性。在数据传输前,设备端通过自己的MDS对象中的Attribute-value-Map属性来组织数据。该属性规定了数据大小的存放顺序。所以通过该属性能够解析事件报告中的数据。

在获取测量数据并且解密后,数据处理模块根据Attribute-value-Map的属性值映射该类测量数据组织形式进行解析,将测量数据转换成json格式的字符串,从而使数据能够在平台之间共享。11073-104zz标准设备中的MDS对象指定数据的存储顺序和格式,只要将标准设备MDS的提前加入管理端的MDS对象列表,可以很好的根据MDS对象Attribute-value-Map属性解析数据。

如图5所示,为本发明实施例中测量数据转换过程示意图。将测量数据转换成json格式的字符串具体为根据协议数据单元中前两个字段choice字段值是否为RECV_CMIP_EVENT_REPORT判断该数据是否包含测量数据,即协议数据单元中前两个字段choice字段值为RECV_CMIP_EVENT_REPORT时该数据包含测量数据;再将测量数据从中提取出来,根据测量数据的count字段分配data_list内存,然后循环遍历测量数据,将测量数据放入链表中;若测量数据是复杂类数据,则再次遍历复杂类型数组,直到遍历完所有测量数据。

在本发明的一个可选实施例中,上述Hservice模块通过JNI调用11073协议模块的功能来改变交互的状态。同时,11073协议模块通过JNI接口实现Hservice模块的相应功能,实现响应过程或请求过程。在11073协议模块中,还调用了Hservice模块中的一些接口来实现设备终端发送数据或状态信息,此外还向Hdisplay模块提供测量数据。

在本发明的一个可选实施例中,上述Hdisplay模块接收Hservice模块传过来的解析JSON格式数据就能获得我们需要的个人健康数据。JSON字符串是以数组的形式获得的,数据中可能包含多个简单数据对象或多个复杂数据对象。

首先JSON字符串类型转换为JSON数组对象JSONArray,然后遍历该数组,在遍历的过程中根据数据组织格式分辨遍历对象是复杂的对象还是简单的对象,如果它是一个复杂的对象,建立一个新的JSONCmpArray存储复杂的对象中的每一个简单对象,如果它是一个简单的对象,则建立JSONSimpObject存储它的值。这里的JSON格式的字符串使用自解释的格式,每个数据包含一些必要的信息,比如测量数据类型,测量数据的单位等。

本发明采用SQLite数据库作为数据存储方案,存储数据前要先将测量数据的属性值加密,以保护本地数据安全。

本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的原理,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。

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