基于蓝牙GAP层的服务设备发现方法与流程

文档序号:15849297发布日期:2018-11-07 09:35阅读:260来源:国知局
基于蓝牙GAP层的服务设备发现方法与流程
本发明涉及低功耗蓝牙通讯
技术领域
,具体地涉及一种基于低功耗蓝牙gap层的服务设备发现方法。
背景技术
低功耗蓝牙协议在设计之初,考虑到实际应用需求,采用了非对称的体系结构,目的是让能源更少的设备负担更少的事情。在实际应用中,这种非对称性体现在:外围服务设备一般只发送广播数据,处于广播状态,不可以主动发起连接;中心设备可以扫描外围设备,并可以通过主动扫描向广播者索取更多信息,只在必要时发起连接。这种非对称体系结构带来的结果之一,便是低功耗蓝牙的“一对多”拓扑结构,如图1所示。低功耗蓝牙beacon是这项功能的一个绝佳案例。随着物联网技术的发展,越来越多的移动终端服务设备被应用到人们的衣、食、住、行等各个方面。作为主流的物联网技术之一,低功耗蓝牙技术凭借其快速的连接性和极低的功耗,被广泛应用到工业控制、消费电子、汽车自动化、农业自动化和医用设备控制等领域,且其应用范围仍在不断扩大。众多的低功耗蓝牙服务设备的普及大大方便了人们的生活,但另一方面,数量众多的服务设备也在一定程度上增加了选择的难度。例如,在一个商场中,可能同时存在餐饮、服饰、娱乐等类型的服务设备,当用户开启手机蓝牙时,会收到这些服务设备的广播信息,用户需要从这些设备中间挑选某一类别的符合自身需求的设备,这无疑会耗费一定时间和精力。现有的低功耗蓝牙服务设备的发现,大都是将在一定时间内扫描到的所有可用服务设备显示出来,而用户真正需要的往往只是某一类别或满足特定条件的服务设备。因此,设备信息存储、设备选择等工作就被留给上层应用或用户,从而带来额外的存储空间和时间消耗,且增加了开发的难度。技术实现要素:为了解决上述存在的技术问题,本发明的目的是提出一种基于蓝牙gap层的服务设备发现方法,仅对符合条件的服务设备及其信息进行存储,从而节省内存空间,简化上层应用程序服务设备发现操作,提高服务设备发现效率。本发明的技术方案是:一种基于蓝牙gap层的服务设备发现方法,预先在蓝牙gap层的设备发现程序中设置设备过滤模块,接收用户输入的过滤条件,该方法包括以下步骤:s01:获取服务设备的广播数据;s02:对所扫描到的服务设备,提取其有效的广播信息,并保存到设备信息表中。s03:根据输入的过滤条件对设备信息表进行过滤,并显示过滤结果;s04:将过滤完成的设备信息表中对应的设备地址加入到白名单;s05:通过主动扫描获取设备的服务信息,并进行存储。优选的技术方案中,所述步骤s01中通过被动扫描状态获取服务设备的广播数据。优选的技术方案中,所述设备信息表中的类别至少包括设备名称、设备地址、服务类型、距离。优选的技术方案中,所述设备信息表以阵列形式进行存储,包括纵列和横行,纵列表示设备编号,通过指针将发现设备按先后顺序链接起来,构成链表,横行表示每个设备的类别,通过指针挂载在相应设备后。优选的技术方案中,所述过滤条件包括精确过滤、过滤并删除不符合类别的设备和某一距离范围内的过滤。优选的技术方案中,所述过滤操作包括对设备信息表的查找、删除、排序操作,当过滤条件为精确过滤时,从服务设备信息链表的首端开始,对比每个服务设备相应类别的信息,如果符合过滤条件,则查找成功,否则,移动指针,直到链表尾部;当过滤条件为过滤并删除不符合类别的设备时,从服务设备信息链表的首端开始,对比每个服务设备相应类别的信息,如果不符合所输入的过滤条件,则删除该节点设备,否则,移动指针,直到链表尾部;当过滤条件为某一距离范围内的过滤时,从服务设备信息链表的首端开始,检查每个服务设备的距离信息,如果在距离范围内,则保留节点设备,否则,删除节点设备,直到链表尾部。与现有技术相比,本发明的优点是:1、在低功耗蓝牙gap层的外围设备搜索服务设备过程中,加入设备信息存储和筛选功能,仅对符合条件的服务设备及其信息进行存储,不仅节省了内存空间,而且简化了上层应用程序设备发现操作,提高了设备发现效率。2、通过主动扫描和扫描回复过程获取服务设备更多的服务信息,而不需要进行连接过程,进一步降低功耗。当用户在公共场合时,如商场、展会等,考虑到周围可能存在非常多的低功耗蓝牙服务设备,采用本发明方法进行设备搜索,所带来的快速性和高效性将更加明显。附图说明下面结合附图及实施例对本发明作进一步描述:图1是低功耗蓝牙的“一对多”拓扑结构;图2是本发明基于蓝牙gap层的服务设备发现方法的流程图;图3是本发明服务设备信息存储结构图;图4是本发明过滤算法流程图。具体实施方式为使本发明的目的、技术方案和优点更加清楚明了,下面结合具体实施方式并参照附图,对本发明进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。实施例:本发明提出了一种基于蓝牙gap层的服务设备发现方法,预先在蓝牙gap层的设备发现程序中设置条件过滤模块,并接收用户输入过滤条件,如图2所示,包括以下步骤:s1.观察者开启蓝牙功能,扫描周围服务设备。服务设备作为广播者,处于广播模式。中心设备作为观察者,使用观察程序来接收广播者的广播数据。这里,通过设置扫描参数命令设置观察者扫描类型为被动扫描,即不需要发送扫描请求包,且设置一次扫描时间为5s,扫描时间到以后停止扫描。之所以使用被动扫描状态,因为开始时观察者仅仅需要获取周围正处于广播模式的服务设备的广播数据。s2.提取服务设备广播信息中的有效数据。经过s1,观察者已经扫描到一些服务设备,将它们的广播信息保存到低功耗蓝牙协议栈中。服务设备广播信息中可能包含设备名称、设备地址、服务类型等信息,为了后续筛选方便,需要对所扫描到的服务设备,提取其有效的广播信息,并保存为设备信息表,如表1所示。表1服务设备信息表编号设备地址设备名称服务类型距离…1xx:xx:xx:xxxxx…2xx:xx:xx:xxxxx….……………...为了后续筛选方便,将表1中的设备信息以图3所示的结构进行存储。在图3中,纵列表示编号1到n的设备,它们通过指针以所发现的先后顺序链接起来,构成链表,作为服务设备信息存储结构;横行表示每个服务设备的信息,包括设备地址、设备名称、服务类型、距离等,挂载在每个设备后面。其中,服务设备信息数据结构对应的伪代码如下:structdevice_info{structdevice_info*device;//指向下一个服务设备的指针设备地址;//48位设备蓝牙设备地址设备名称;//字符串服务类型;距离;……};s3.接收用户输入的筛选条件,作为设备过滤模块的输入。根据用户需求,过滤条件分为三类,分别用符号表示为“==”、“()”、“>、>=、<、<=”。其中,“==”表示精确过滤,“()”表示过滤并删除不符合某一类别的设备,“>、>=、<、<=”表示某一范围内的过滤。用户可以选择输入某一类别的精确信息来进行精确过滤,如低功耗蓝牙设备的地址、名称等;也可以选择输入某一类别信息的范围实现模糊过滤,如所提供服务的类型、服务设备距离等;当然也可以是多个过滤条件的组合,如服务设备信息表中的一个或多个类别。在使用时,当用户知道目标服务设备的全称时,则可以在名称类别对应地输入该设备的名称,可以是全称也可以是部分关键字符串,从而实现对附近服务设备的精确过滤;当用户需要查找提供某服务类型的设备时,便可以通过输入设备服务类型来进行选择;还可以通过输入距离范围,过滤得到附近一定范围内的服务设备信息。s4.为设备过滤模块设计过滤算法,根据筛选条件,利用所设计的过滤算法,对设备信息表进行过滤,并显示过滤结果。当检测到用户输入过滤条件完成以后,根据条件对服务设备信息表进行过滤。由于s2得到设备信息后,以链表的结构存储起来,因此对设备信息表进行过滤实际上就是对上述链表的筛选或过滤。结合s3所述过滤条件的种类,过滤算法也就是对链表的查找、删除、排序等操作的组合。例如,当用户筛选条件为服务设备地址或设备名称时,只需要在链表中进行查找操作,此时对应的过滤条件类别为“==”;当用户想要得到某个类别的服务设备时,就需要对链表进行删除操作,此时对应的过滤条件类别为“()”;而当用户筛选条件为一定范围内的蓝牙设备时,就需要对链表按特定条件进行排序,此时对应的过滤条件类别为“>、>=、<、<=”。上述三种过滤方法都是基于s2所得到的服务设备信息数据所进行的,它们组成的过滤算法流程如图4所示。参照图4,当用户想要精确查找符合某一过滤条件的服务设备时,过滤算法执行最左边的过程:从服务设备信息链表的首端开始,对比每个服务设备相应类别的信息,如果符合过滤条件,则查找成功,否则,移动指针,直到链表尾部。当用户想要得到符合过滤条件的多个服务设备时,过滤算法执行中间的过程:从服务设备信息链表的首端开始,对比每个服务设备相应类别的信息,如果不符合所输入的过滤条件,则删除该节点设备,否则,移动指针,直到链表尾部。当用户想要过滤某一距离范围内的服务设备时,过滤算法执行最右边的过程:从服务设备信息链表的首端开始,检查每个服务设备的距离信息,如果在距离范围内,则保留节点设备,否则,删除节点设备,直到链表尾部。这个过程可能会删除设备信息表中的数据,也可能会按照符合度高低对数据进行排序。最终得到的服务设备信息数据已经不同于s2,而是更接近用户需求。此步骤还包括,对筛选得到的结果进行显示,等待用户确认筛选结果。s5.如果用户不接受这个结果,则继续s3;如果用户接受过滤结果,则转到s6;考虑到用户实际需求,可以在s4的结果之上,再次输入另外的过滤条件,进行二次筛选,这样便实现了一个多条件或复合条件过滤功能。此外,用户还可以通过选择重新筛选,开始新的一轮选择。s6.将最终得到的设备信息表中对应的设备地址加入到白名单。白名单是低功耗蓝牙协议中最简单、直白的一种安全机制,所谓白名单,就是一组蓝牙地址。通过白名单,可以只允许特定的蓝牙设备扫描、连接本地设备,也可以只扫描、连接特定的蓝牙设备。例如,如果某个低功耗蓝牙设备只需要被受信任的某几个设备扫描、连接,就可以把这些受信任设备的蓝牙地址加入到该设备的白名单中。这里,当已经筛选出符合用户需求的服务设备后,就通过设置白名单命令,将它们加入到观察者的白名单中即可。s7.中心设备使用主动扫描状态,通过过滤政策为白名单的主动扫描,获取对应的服务设备更多的服务信息。这里需要先进行扫描参数设置,将扫描类型设为主动扫描,将扫描过滤策略设为0x01,即只接收白名单中设备的扫描回复包。应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1