一种Android系统下不同蓝牙模组的兼容方法与流程

文档序号:18940677发布日期:2019-10-23 01:08阅读:669来源:国知局
一种Android系统下不同蓝牙模组的兼容方法与流程

本发明涉及无线通信技术领域,具体的说,是一种android系统下不同蓝牙模组的兼容方法。



背景技术:

随机电视软件技术和电视产品的发展:电视产品越来越多样化,型号也越来越丰富。为了满足不同客户群体的需求,同一机芯会采用不同的蓝牙模组,定制蓝牙功能。为了便于平台代码统一化管理,提高系统开发人员开发效率,软件上实现蓝牙模组智能化管理显得十分重要。当前同一平台实现不同蓝牙模组兼容比较常见的解决方案是:将蓝牙的固件、驱动、蓝牙协议栈和蓝牙系统服务移植到代码库中,根据不同的整机编译命令,选择对应蓝牙模组的代码生成不同的整机软件;然后根据整机软件升级对应型号的电视。这种方式对代码管控要求十分严格,且整机软件只能刷特定的蓝牙模组的电视产品,不能动态根据蓝牙模组动态选择驱动、协议栈等。若编译命令出错,编译出来的整机软件会导致整机蓝牙基础功能无法正常使用,造成无法估量的损失。另外一种方式可以将所需的代码单独编译,将生成的文件打包到整机软件中。这种方式代码同步管理比较困难,且若有特殊定制功能,这种方式无法满足需求。



技术实现要素:

本发明的目的在于提供一种android系统下不同蓝牙模组的兼容方法,用于解决现有技术中一套整机软件不兼容不同蓝牙模组的问题。

本发明通过下述技术方案解决上述问题:

一种android系统下不同蓝牙模组的兼容方法,所述方法包括如下步骤:

步骤1:将多个蓝牙模组的驱动、固件和蓝牙协议移植到代码库中;

步骤2:更改各个蓝牙模组的蓝牙协议栈的编译文件中相同的模块名name;

步骤3:将定制的蓝牙协议添加到蓝牙系统服务应用中,并在蓝牙系统服务应用的蓝牙协议配置文件中增加定制蓝牙协议对应蓝牙厂商的参数;

步骤4:开机启动蓝牙系统服务应用时,根据蓝牙模组动态匹配蓝牙协议。

通过本方法,将多个蓝牙模组的驱动、固件和蓝牙协议移植到代码库中,修改编译文件,让多个蓝牙模组的程序在编译的时候不会冲突,完善android电视平台对蓝牙模组智能化管理,便于代码统一化管理,避免重复性开发工作,提高程序员开发效率,降低开发和代码管控成本,很好的解决了一套整机软件不兼容不同蓝牙模组的问题。

优选地,所述定制蓝牙,包括蓝牙唤醒功能,用于交流上电进入待机模式。

优选地,若电视处于待机模式下,固定蓝牙usb扫描的端口,将第一次交流上电识别到蓝牙模组厂商写入环境变量中;第二次上电的时候,读取环境变量匹配蓝牙usb端口,成功之后下载蓝牙开机固件等待蓝牙开机报文。

优选地,第一次上电时写入环境变量中的数据包括产品识别码和pid、供应商识别码vid。

本发明与现有技术相比,具有以下优点及有益效果:

本发明将多个蓝牙模组的驱动、固件和蓝牙协议移植到代码库中,修改编译文件,让多个蓝牙模组的程序在编译的时候不会冲突,完善android电视平台对蓝牙模组智能化管理,便于代码统一化管理,避免重复性开发工作,提高程序员开发效率,降低开发和代码管控成本,很好的解决了一套整机软件不兼容不同蓝牙模组的问题。

附图说明

图1为本发明的兼容蓝牙模组方案中使用的android系统版本蓝牙架构图;

图2为本发明兼容蓝牙模组方案中交流上电蓝牙模块加载蓝牙固件的流程示意图。

具体实施方式

下面结合实施例对本发明作进一步地详细说明,但本发明的实施方式不限于此。

实施例1:

一种android系统下不同蓝牙模组的兼容方法,所述方法包括如下步骤:

步骤1:将多个蓝牙模组的驱动、固件和蓝牙协议移植到代码库中;

步骤2:更改各个蓝牙模组的蓝牙协议栈的编译文件中相同的模块名name;

步骤3:将定制的蓝牙协议添加到蓝牙系统服务应用中,并在蓝牙系统服务应用的蓝牙协议配置文件中增加定制蓝牙协议对应蓝牙厂商的参数;

步骤4:开机启动蓝牙系统服务应用时,根据蓝牙模组动态匹配蓝牙协议。

一套整机软件不同蓝牙模组兼容方案,需要先梳理androidbluetooth模块的架构,以及蓝牙定制功能的特点。android8.0的蓝牙架构如图1所示,分为蓝牙framework层、蓝牙系统服务、蓝牙jni接口、蓝牙协议栈、蓝牙供应商接口等。然后需要根据产品所采用的android版本编译环境,定制合适的编译文件。最后,根据电视蓝牙定制功能使用场景设计兼容方案。下面将从两个方面进行阐述:

一是编译方面:由于android7.0之后,google引入替代android.mk编译文件的android.bp。android.bp文件中的模块以一个模块类型开始,后面跟着一组属性,以名值对(name:value)表示。每个模块必须有一个name属性,并且在所有的android.bp文件中必须是唯一的。这点与.mk编译文件有差异。导致一个代码库如果编译两份蓝牙协议栈,会导致模块名字冲突而编译失败。且目前的解决方案主要是设置不同的编译参数,根据参数编译不同蓝牙协议栈生成不同的整机软件。或者将两份协议栈分开编译,将生成的文件直接预置到编译系统中。

这两种方案前一种需要用编译参数,来区分需要编译的文件,生成不同整机软件。后一种方式需要分开编译蓝牙协议栈不利于代码同步管理。而本申请针对不同蓝牙模组兼容方案编译问题主要通过更改协议栈所有.bp文件中模块的name,避免编译了冲突,这样就可以利用同一个编译命令编译出具有两套或者两套以上蓝牙模组协议栈的整机软件。运行时,根据蓝牙模组动态选择合适的蓝牙协议栈。

二是电视平台蓝牙定制功能方面,不同蓝牙厂商会涉及到不同的蓝牙协议。由于不同厂商根据自己蓝牙的硬件设计接口,定制蓝牙协议。针对这个问题,原解决方案是将蓝牙应用分开编译,根据编译命令预置不同的蓝牙应用。而本文方案将原生蓝牙协议配置静态管理改为动态管理,让同一个蓝牙服务应用能根据蓝牙模组启动不同蓝牙协议,实现了同一个蓝牙应用管理不同厂商定制的协议。具体实现的工作流程如下:

蓝牙定制功能还有一个比较特殊的功能蓝牙唤醒。如图2所示,该功能使用场景特殊,需要在交流上电进入待机模式即mboot下,实现蓝牙开机唤醒功能。该功能需要根据蓝牙模组加载不同蓝牙固件,而原来的蓝牙固件加载是根据检测设备pid(productid,产品识别码)、vid(vendorid,供应商识别码)实现,或者整机编译时,只选择特定的固件。前者方案耗时长,后者方案无法做到一套代码兼容。本方案针对该使用场景,在第一次上电时,将检测到的pid、vid写入环境变量,第二次交流上电时,就能根据环境变量匹配不同设备的蓝牙固件。该方案保证了蓝牙唤醒功能正常和不增加上电进入待机模式时间情况下,实现一套代码兼容不同蓝牙模组。

尽管这里参照本发明的解释性实施例对本发明进行了描述,上述实施例仅为本发明较佳的实施方式,本发明的实施方式并不受上述实施例的限制,应该理解,本领域技术人员可以设计出很多其他的修改和实施方式,这些修改和实施方式将落在本申请公开的原则范围和精神之内。

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