解决带闪存IoT设备与安卓设备间蓝牙通信兼容性的方法与流程

文档序号:11181130阅读:526来源:国知局
解决带闪存IoT设备与安卓设备间蓝牙通信兼容性的方法与流程
本发明涉及蓝牙通信领域,尤其涉及一种带有flash(闪存,一般作为外存)的iot(internetofthings,物联网)设备与安卓设备间蓝牙通信兼容性解决方法。
背景技术
:随着iot技术的发展,应用iot技术的行业越来越多,包括生产制造业、消费电子业、医疗健康业等。iot的发展使我们的生活朝着更加自动化、智能化的方向发展,给生活带来了更大的便利,未来将成为我们生活中不可或缺的一部分。iot作为物物相连的网络,无线通信技术十分重要,蓝牙以其成本廉价、功耗低等特点成为了iot设备较为欢迎的一种无线通信协议。然而,蓝牙存在一些兼容性问题也一定程度阻碍了它的发展,例如:连接不能建立、时常断开等问题,这些问题成为了蓝牙领域研究的重点之一。iot设备中有蓝牙模块,蓝牙模块与安卓设备可通过蓝牙进行连接,在安卓设备端对iot设备进行管理、监督、数据分析等。一般iot设备作为从设备,安卓设备作为主设备,例如:可穿戴智能手表通过安卓手机对手表进行管理。但是,目前带有flash的iot设备作为从设备与安卓设备之间进行蓝牙通信时,需要对flash进行擦写操作而导致严重的兼容性问题,尤其是在软件开发过程中蓝牙兼容性问题更为显著。蓝牙通信的兼容性问题是指,带有flash的iot设备只能与某些特定厂商特定型号的安卓设备进行稳定的蓝牙通信,对于一些安卓设备,即使是采用相同版本的操作系统,在相同环境下,带有flash的iot设备在与这些安卓设备进行蓝牙通信时,会出现蓝牙连接不稳定,频繁断开的现象。产生该问题的主要原因是:在iot设备与安卓设备进行蓝牙通信时,通常由安卓设备作为主设备,iot设备作为从设备,蓝牙连接参数由主设备(安卓设备)决定,从设备(iot设备)只能被动接受这些连接参数。同时,当iot设备对flash进行擦写操作时,由于iot设备对flash的擦写需要一定的时间,导致iot设备对蓝牙连接事件的连接参数有要求,如果iot设备对flash的擦写时间比蓝牙连接事件的连接间隔(connectioninterval)长,可能导致蓝牙连接事件被跳过,也可能导致对flash的访问推迟。在蓝牙协议中定义的连接参数范围宽广,各个安卓厂商在实现蓝牙功能时定义的连接参数不统一,故iot设备与不同安卓设备进行蓝牙连接时使用的连接参数不统一,不能满足iot设备对flash的擦写操作的连接参数就会引起蓝牙连接超时或蓝牙连接断开而造成兼容性问题。因此需要有一种克服蓝牙连接间隔与flash存储访问间矛盾的方法,从而解决带有flash的iot设备与不同厂商安卓设备间蓝牙互通信异常而产生的兼容性问题。目前尚未从公开发表的资料上查阅到相关问题的解决方法。一个蓝牙连接事件是指主设备和从设备之间相互发送数据包的过程,主设备和从设备建立连接之后,所有的数据通信都是在连接事件(connectionevents)中进行的。蓝牙协议中定义了很多种连接事件,包括连接建立事件、连接参数更新请求事件、连接参数更新事件和一些用户自定义事件等。虽然,为了实现不同的功能,蓝牙协议中定义了各种不同的事件,但在蓝牙应用的实现中,有些功能不是必选功能,即不是每一种连接事件都会被应用,例如连接参数更新请求事件,大多数蓝牙设备中都未应用这一事件,从而连接参数只在建立连接时由主设备决定。连接参数更新事件是由主设备发起的连接事件,连接参数由主设备决定,从设备只能接受并使用这些连接参数,或者断开连接。如果从设备希望修改当前的连接参数,则可以向主设备发起连接参数更新请求事件。连接参数更新请求事件仅用于从设备向主设备发送,如果该事件由主设备发送,从设备会将其视为一个错误。从设备可以在任何时候发送参数更新请求事件,收到该连接事件的主设备如果同意修改连接参数,则将返回连接参数更新响应事件,携带结果参数为“接受”。随后,主设备启动连接参数更新事件。如果主设备不同意从设备的连接参数更新请求,则发送结果参数为“拒绝”的连接参数更新响应事件以拒绝请求。此时从设备有两个选择:接受正在使用的连接参数或者终止连接。目前,安卓设备作为主设备时,都会接受从设备的连接参数更新请求,从而使从设备(iot设备)可以与主设备进行连接参数的协商,在从设备发起连接参数更新请求后,主设备和从设备可以使用满足从设备要求的连接参数进行蓝牙通信。技术实现要素:本发明要解决的技术问题是:提供一种解决带有flash的iot设备与不同厂商安卓设备间蓝牙通信的兼容性方法,保证iot设备在与不同厂商安卓设备进行蓝牙连接时,能有效支持对iot设备对flash存储的操作,且保持蓝牙处于连接状态。本发明的技术方案是:针对iot设备的开发,设计一个由iot设备(即从设备)使用的闪存兼容模块,使从设备能够与主设备进行连接参数的协商,从而解决蓝牙连接间隔与flash存储访问间的冲突问题。具体步骤如下:第一步,设计一个闪存兼容模块,与iot设备中的蓝牙模块相连接,在iot设备进行连接事件处理时,由闪存兼容模块与安卓设备协商连接参数,使连接参数满足iot设备中flash存储访问的要求。闪存兼容模块由初始化模块、参数更新请求模块和参数更新处理模块组成。初始化模块与参数更新请求模块和参数更新处理模块相连,功能是为参数更新请求模块提供连接参数,为参数更新处理模块提供连接参数和连接模式标志。连接参数包括连接间隔(从设备希望主设备允许从设备发送数据包的频率)、从设备延迟系数(从设备能够忽略主设备的连接事件个数的最大值)以及监督超时时间(从设备与主设备在没有发生通信的情况下保持连接的最大时间)。连接模式标志有三种,即未知模式标志、快速连接模式标志和慢速连接模式标志,分别对应未知模式、慢速连接模式和快速连接模式。未知模式标志是指从设备没有发起连接参数更新请求时采用的连接模式标志;快速连接模式标志是从设备向主设备发起快速连接参数更新请求后采用的连接模式标志,此时连接事件的连接间隔较短(仅满足主从设备间正常通信的最小连接间隔)或从设备延迟系数较小(一般设置为0),在蓝牙模块需要处理大量数据的时候,主从设备间采用快速连接模式可以提高对连接事件的处理效率;慢速连接模式标志是从设备向主设备发起慢速连接参数更新请求后采用的连接模式标志,主从设备间采用慢速连接模式时,连接参数相对于快速连接模式的连接参数,连接事件的连接间隔较长或从设备延迟系数较大,此模式能够降低从设备处理蓝牙事件的频率,从而降低从设备的功耗。作为从设备的iot设备一般为电池供电或充电较困难,节能对iot设备十分重要,在蓝牙模块没有数据需要处理或有少量数据需要处理时,慢速连接模式可以减少蓝牙模块的能耗。参数更新请求模块与初始化模块和蓝牙模块相连;参数更新请求模块从蓝牙模块接收连接建立事件或大数据事件(用户自定义的需要处理大量数据的连接事件),若接收的是连接建立事件,将连接模式标志设置为慢速连接模式标志,若接收的是大数据事件,则将连接模式标志设置为快速连接模式标志,并将连接模式标志发送给初始化模块;同时,参数更新请求模块从初始化模块获取连接参数,将连接参数存入蓝牙模块后向蓝牙模块发送连接参数更新请求,由蓝牙模块向主设备发送连接参数更新请求事件,携带连接参数。参数更新处理模块与初始化模块和蓝牙模块相连,功能是判断初始化模块中的连接参数是否更新成功,若成功,则用新的连接参数保持连接,若不成功,则向蓝牙模块发送断开连接命令,使蓝牙模块与主设备断开连接。参数更新处理模块从初始化模块获取连接参数和连接模式标志,将从初始化模块获取的连接参数与从蓝牙模块得到的主设备返回的连接参数进行比较,若主设备返回的连接间隔不在初始化模块中的最小连接间隔与最大连接间隔的范围内(即小于初始化模块中的最小连接间隔或大于最大连接间隔),则向蓝牙模块发送断开连接命令,使蓝牙模块与主设备断开连接,若主设备返回的连接间隔在初始化模块中的最小连接间隔与最大连接间隔的范围内(即大于等于初始化模块中的最小连接间隔且小于等于最大连接间隔),则不做处理,蓝牙模块继续与主设备保持连接。第二步,初始化模块初始化连接参数和连接模式标志,连接模式标志初始化为未知模式,连接参数由开发人员设置,方法是:连接间隔可以是7.5ms~4s内的任意值,但必须为1.25ms的整数倍;从设备延迟系数范围可以是0~499;监督超时时间范围是100ms~32s。连接间隔、从设备延迟以及监督超时时间这三者满足如下公式:监督超时时间>(1+从设备延迟系数)×(连接间隔)(公式一)考虑到对flash的操作,擦除4096字节(最小擦除单位)的时间大约为22ms,即擦除时间为22ms的整数倍,写256字节的时间大约为13ms,当监督超时时间大于6倍的连接间隔且连接间隔大于60ms时,作为从设备的iot设备对flash存储操作成功的概率比较高。在设置连接参数时须保证iot设备在一个蓝牙事件中有足够的时间对flash进行擦写操作,即连接间隔要大于对flash操作的时间。为了在从设备发起的参数更新请求能够有较大的概率被主设备接受,需设置一个连接间隔的取值范围,即连接间隔可以为最小连接间隔和最大连接间隔中的任意值。一般,iot设备蓝牙接收缓存(iot设备内存中的一部分)越大,最小连接间隔和最大连接间隔就要越大,因为接收缓存代表了iot设备在一个蓝牙事件中接收数据量的能力,如果一个连接事件中的数据量等于接收缓存,则将这些数据写入flash的时间为:蓝牙接收缓存大小(单位为字节)÷256×13,单位为毫秒(例如接收缓存为1kb时,写flash的时间为52ms),将这些数据擦除的时间为:单位为毫秒;表示对实数x上取整。(例如接收缓存为1kb时,擦除flash的时间为22ms)。所以接收缓存为1kb时的连接间隔要大于22+52=74ms。对于蓝牙接收缓存为nkb的iot设备,其慢速连接模式时参数设置优选方法是:最小连接间隔大于(n×1024÷256×13)+(n÷4+1)×22(ms)且满足1.25ms的整数倍;最大连接间隔为最小连接间隔+20ms;从设备延迟系数的值大于1;监督超时时间满足在监督超时时间内至少给从设备留出6次侦听的机会,即(从设备延迟系数+1)×6×连接间隔<监督超时时间。快速连接模式时参数设置优选方法是:从设备延迟系数为0,其他连接参数与慢速连接模式相同。例如,采用的iot设备的蓝牙接收缓存为1k时,慢速连接模式时参数设置可如表1,快速连接模式时参数设置可如表2。表1慢速连接模式最小连接间隔最大连接间隔从设备延迟系数监督超时时间80ms100ms24s表2快速连接模式最小连接间隔最大连接间隔从设备延迟系数监督超时时间80ms100ms04s第三步,从设备的蓝牙模块接收主设备发送的连接建立事件或大数据事件,将连接建立事件或大数据事件发送给参数更新请求模块。第四步,参数更新请求模块根据接收的连接事件是连接建立事件还是大数据事件,向蓝牙模块发送连接参数更新请求,方法是:4.1参数更新请求模块根据从蓝牙模块接收的连接事件携带的连接状态判断从设备蓝牙状态是否为处于连接模式。如果连接状态无效,则不进行连接参数更新请求,转第三步;如果连接状态有效,转4.2;4.2参数更新请求模块判断从蓝牙模块接收到的连接事件是连接建立事件还是大数据事件,若是连接建立事件,则将连接模式标志设置为慢速连接模式标志,并将慢速连接模式标志发送给初始化模块;若是大数据事件,则将连接模式标志设置为快速连接模式标志,并将快速连接模式标志发送给初始化模块;4.3参数更新请求模块从初始化模块读取连接参数,并将连接参数发送给蓝牙模块,方法是:若参数更新请求模块从蓝牙模块接收到的是连接建立事件,则从初始化模块读取慢速连接模式的连接参数并发送给蓝牙模块;若参数更新请求模块从蓝牙模块接收到的是大数据事件,则从初始化模块读取快速连接模式的连接参数并发送给蓝牙模块;4.4参数更新请求模块向蓝牙模块发送连接参数更新请求,携带连接参数,若参数更新请求模块从蓝牙模块接收到的是连接建立事件,则携带慢速连接模式的连接参数;若参数更新请求模块从蓝牙模块接收到的是大数据事件,则携带快速连接模式的连接参数。第五步,从设备蓝牙模块将接收到的连接参数更新请求发送给主设备。第六步,主设备接收到从设备蓝牙模块发送的连接参数更新请求事件后,向从设备发送连接参数更新响应事件,携带结果参数“接受”或“拒绝”。第七步,从设备蓝牙模块接收到主设备发送的连接参数更新响应事件,判断结果参数是“接受”还是“拒绝”。如果结果参数是“接受”,则等待主设备发送的连接参数更新事件,转第八步;如果结果参数是“拒绝”,蓝牙模块将从设备发起连接参数更新请求之前使用的旧连接参数发送给参数更新处理模块,转第九步。第八步,从设备的蓝牙模块接收主设备发送的连接参数更新事件,将连接参数更新事件发送给参数更新处理模块,携带主设备决定使用的新连接参数。新连接参数是主设备根据从设备发送的连接参数更新请求中携带的连接参数决定的,即新的连接参数的连接间隔大于等于参数更新请求中携带的最小连接间隔且小于等于最大连接间隔,从设备延迟系数和监督超时时间与参数更新请求中的相同。第九步,参数更新处理模块对参数更新结果进行处理。方法是:9.1参数更新处理模块根据初始化模块中的连接模式标志判断是快速连接模式还是慢速连接模式,若是快速连接模式,转9.2,若是慢速连接模式,则转9.3;9.2参数更新处理模块从初始化模块获取快速连接模式的连接参数,并判断参数更新事件携带的连接参数中的连接间隔是否在快速连接模式中设置的最小连接间隔和最大连接间隔范围之内,如果不在最小连接间隔和最大连接间隔范围之内,转9.4;如果在最小连接间隔和最大连接间隔范围之内,转9.5;9.3参数更新处理模块从初始化模块获取慢速连接模式的连接参数,并判断参数更新事件携带的连接参数中的连接间隔是否在慢速连接模式中设置的最小连接间隔和最大连接间隔范围之内,如果不在最小连接间隔和最大连接间隔范围之内,转9.4;如果在最小连接间隔和最大连接间隔范围之内,转9.5;9.4参数更新处理模块向蓝牙模块发送连接参数更新请求,根据初始化模块中的连接模式标志携带相应模式下的连接参数,转第五步。9.5参数更新处理模块将参数更新事件携带的连接参数保存到蓝牙模块,由蓝牙模块保持与主设备的蓝牙连接。采用本发明可以达到以下技术效果:采用本发明使得从设备可以向主设备发送连接参数更新请求,从而使从设备(iot设备)可以与主设备(安卓设备)进行连接参数的协商,在从设备发起连接参数更新请求后,从设备和主设备可以使用满足从设备flash要求的连接参数进行蓝牙通信,使得带有flash的iot设备在与安卓设备进行蓝牙通信时,不会出现因连接参数不合适,使iot设备对flash操作没有处理完而导致蓝牙频繁断开的现象,完全解决了iot设备与安卓设备间蓝牙通信兼容性问题。附图说明图1是本发明总体流程图;图2是本发明第一步设计的闪存兼容模块结构图。具体实施方式图1是本发明总体流程图。本发明包括以下步骤:第一步,设计如图2所示的闪存兼容模块,与iot设备中的蓝牙模块相连接,在iot设备进行连接事件处理时,由闪存兼容模块与安卓设备协商连接参数,使连接参数满足iot设备中flash存储访问的要求。闪存兼容模块由初始化模块、参数更新请求模块和参数更新处理模块组成。初始化模块与参数更新请求模块和参数更新处理模块相连,功能是为参数更新请求模块提供连接参数,为参数更新处理模块提供连接参数和连接模式标志。参数更新请求模块与初始化模块和蓝牙模块相连;参数更新请求模块从蓝牙模块接收连接事件或大数据事件,若接收的是连接事件,将连接模式标志设置为慢速连接模式标志,若接收的是大数据事件,则将连接模式标志设置为快速连接模式标志,并将连接模式标志发送给初始化模块;同时,参数更新请求模块从初始化模块获取连接参数,将连接参数存入蓝牙模块后向蓝牙模块发送连接参数更新请求,由蓝牙模块向主设备发送连接参数更新请求事件,携带连接参数。参数更新处理模块与初始化模块和蓝牙模块相连,功能是判断初始化模块中的连接参数是否更新成功,若成功,则用新的连接参数保持连接,若不成功,则向蓝牙模块发送断开连接命令,使蓝牙模块与主设备断开连接。参数更新处理模块从初始化模块获取连接参数和连接模式标志,将从初始化模块获取的连接参数与从蓝牙模块得到的主设备返回的连接参数进行比较,若主设备返回的连接间隔不在初始化模块中的最小连接间隔与最大连接间隔的范围内,则向蓝牙模块发送断开连接命令,使蓝牙模块与主设备断开连接,若主设备返回的连接间隔在初始化模块中的最小连接间隔与最大连接间隔的范围内,则不做处理,蓝牙模块继续与主设备保持连接。第二步,初始化模块初始化连接参数和连接模式标志,连接模式标志初始化为未知模式,连接参数由开发人员设置。第三步,从设备的蓝牙模块接收主设备发送的连接建立事件或大数据事件,将连接建立事件或大数据事件发送给参数更新请求模块。第四步,参数更新请求模块根据接收的连接事件是连接建立事件还是大数据事件,向蓝牙模块发送连接参数更新请求,方法是:4.1参数更新请求模块根据从蓝牙模块接收的连接事件携带的连接状态判断从设备蓝牙状态是否为处于连接模式。如果连接状态无效,则不进行连接参数更新请求,转第三步;如果连接状态有效,转4.2;4.2参数更新请求模块判断从蓝牙模块接收到的连接事件是连接建立事件还是大数据事件,若是连接建立事件,则将连接模式标志设置为慢速连接模式标志,并将慢速连接模式标志发送给初始化模块;若是大数据事件,则将连接模式标志设置为快速连接模式标志,并将快速连接模式标志发送给初始化模块;4.3参数更新请求模块从初始化模块读取连接参数,并将连接参数发送给蓝牙模块,方法是:若参数更新请求模块从蓝牙模块接收到的是连接建立事件,则从初始化模块读取慢速连接模式的连接参数并发送给蓝牙模块;若参数更新请求模块从蓝牙模块接收到的是大数据事件,则从初始化模块读取快速连接模式的连接参数并发送给蓝牙模块;4.4参数更新请求模块向蓝牙模块发送连接参数更新请求,携带连接参数,若参数更新请求模块从蓝牙模块接收到的是连接建立事件,则携带慢速连接模式的连接参数;若参数更新请求模块从蓝牙模块接收到的是大数据事件,则携带快速连接模式的连接参数。第五步,从设备蓝牙模块将接收到的连接参数更新请求发送给主设备。第六步,主设备接收到从设备蓝牙模块发送的连接参数更新请求事件后,向从设备发送连接参数更新响应事件,携带结果参数“接受”或“拒绝”。第七步,从设备蓝牙模块接收到主设备发送的连接参数更新响应事件,判断结果参数是“接受”还是“拒绝”。如果结果参数是“接受”,则等待主设备发送的连接参数更新事件,转第八步;如果结果参数是“拒绝”,蓝牙模块将从设备发起连接参数更新请求之前使用的旧连接参数发送给参数更新处理模块,转第九步。第八步,从设备的蓝牙模块接收主设备发送的连接参数更新事件,将连接参数更新事件发送给参数更新处理模块,携带主设备决定使用的新连接参数。新连接参数是主设备根据从设备发送的连接参数更新请求中携带的连接参数决定的,即新的连接参数的连接间隔大于等于参数更新请求中携带的最小连接间隔且小于等于最大连接间隔,从设备延迟系数和监督超时时间与参数更新请求中的相同。第九步,参数更新处理模块对参数更新结果进行处理。方法是:9.1参数更新处理模块根据初始化模块中的连接模式标志判断是快速连接模式还是慢速连接模式,若是快速连接模式,转9.2,若是慢速连接模式,则转9.3;9.2参数更新处理模块从初始化模块获取快速连接模式的连接参数,并判断参数更新事件携带的连接参数中的连接间隔是否在快速连接模式中设置的最小连接间隔和最大连接间隔范围之内,如果不在最小连接间隔和最大连接间隔范围之内,转9.4;如果在最小连接间隔和最大连接间隔范围之内,转9.5;9.3参数更新处理模块从初始化模块获取慢速连接模式的连接参数,并判断参数更新事件携带的连接参数中的连接间隔是否在慢速连接模式中设置的最小连接间隔和最大连接间隔范围之内,如果不在最小连接间隔和最大连接间隔范围之内,转9.4;如果在最小连接间隔和最大连接间隔范围之内,转9.5;9.4参数更新处理模块向蓝牙模块发送连接参数更新请求,根据初始化模块中的连接模式标志携带相应模式下的连接参数,转第五步。9.5参数更新处理模块将参数更新事件携带的连接参数保存到蓝牙模块,由蓝牙模块保持与主设备的蓝牙连接。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1