Android系统Sensor HAL层兼容多种同种Sensor设备的移植处理方法及装置...

(10)申请公布号 (43)申请公布日 2013.10.16C N  103353835 A (21)申请号 201310016831.3
(22)申请日 2013.01.17
G06F 9/44(2006.01)
(71)申请人珠海全志科技股份有限公司
地址519080 广东省珠海市软件园路1号生
产加工中心4#楼四层1单元
(72)发明人银兰凤
(74)专利代理机构广州华进联合专利商标代理
有限公司 44224
代理人李双皓
陈振
(54)发明名称
Android 系统Sensor HAL 层兼容多种同种
Sensor 设备的移植处理方法及装置
(57)摘要
本发明公开了一种Android 系统Sensor HAL
层兼容多种同种Sensor 设备的移植处理方法及
装置,其中方法包括设置初始化参数;读取设备
驱动中注册的设备名称,并与已定义的设备名称
进行匹配,确定系统中使用的Sensor 设备;解析
配置文件,根据模组的名称读取配置文件中相应
模组的方向值及不同Sensor 需要进行转换的参
数值设置和方向的调整;根据读取到的驱动中设
备注册的名称,将相应的设备添加到传感器列表;
Android 系统启动相应的线程调用Sensors HAL
层中的poll 函数获取底层相应设备的数据。本发
明提供的Android 系统Sensor HAL 层兼容多种同
种Sensor 设备的移植处理方法及装置能够动态
的判断硬件设备来进行相应接口的实现,从而快
速地替换Sensor 设备以及实现Sensor 设备方向
的调整,而不需要进行新的编译以及配置操作。(51)Int.Cl.
权利要求书4页  说明书11页  附图5页
(19)中华人民共和国国家知识产权局(12)发明专利申请权利要求书4页  说明书11页  附图5页(10)申请公布号CN 103353835 A
*CN103353835A*
1.一种Android系统Sensor HAL层兼容多种同种Sensor设备的移植处理方法,其特征在于,包括如下步骤:
根据Linux系统中支持的Sensors驱动,对Sensor HAL层进行初始化处理;在初始化时,设置驱动平台所支持的所有模组的名称及转换值;预设Gsensor方向值路径及Sensor 设备的路径,预设Gsensor方向变量的识别名称并配置相应的方向变量配置文件;针对不同Sensor设备设置相应的Sensor_t结构体;其中,设置的每个模组的名称与Sensor设备注册到Linux输入子系统中的设备名称一一对应;
在Sensors设备的Driver注册到Linux的输入子系统后,Sensors HAL层根据生成Sensors设备对应的节点,确定获取当前已注册的Sensors设备的名称及模组;
在Android HAL层确定获取当前已注册的Sensor设备名称后,根据预设的Sensor设备方向值的路径,读取所述方向变量配置文件并解析预设的Sensor方向值,比对所述预设的Sensor方向值与所需Sensor方向值,调整Sensor设备的方向;
获取Sensor设备对应的Sensor_t结构体信息,将硬件中使用的模组添加到传感器列表中,实现将所述模组注册到Android层;
所述Android层启动相应的线程调用Sensors HAL层中的poll函数获取底层相应设备的数据。
2.根据权利要求1所述的移植处理方法,其特征在于,所述设置驱动平台所支持的所有模组的名称及转换值包括如下步骤:
在确定驱动平台所支持的所有模组的名称及转换值后,利用结构体name记录模组的设备名称以及Sensor的转换量值;其中:转换量值为Sensor设备的Driver上报的最大值;
所述预设Gsensor方向变量的识别名称并配置相应的方向变量配置文件,包括如下步骤:
根据不同模组的名称,分别设置相应模组的X、Y、Z轴的方向以及是否将XY轴交换的标志;所述Gsensor方向变量的识别名称用于识别Sensor设备的方向值;将设置的Gsensor 方向变量信息配置在方向变量配置文件Gsensor.cfg中并保存;
所述针对不同Sensor设备设置相应的Sensor_t结构体,包括如下步骤:
根据不同Sensor设备,设置相应的Sensor_t结构体的描述信息。
3.根据权利要求1所述的移植处理方法,其特征在于,所述Sensors HAL层根据生成与Sensors设备对应的节点,确定获取的当前已注册的Sensors设备的名称及模组,包括如下步骤:
在当前Sensors设备的Driver注册到Linux的输入子系统后,Sensors HAL层根据所述输入子系统生成的且与所述当前Sensors设备一一对应的节点的存储位置,到所述当前Sensors设备对应的input设备存储位置;
其中:所述设备的节点存在于“/sys/class/input/inputX”目录下,X为正整数,X数值等于根据Linux系统的输入设备对应的输入顺序序号;X数值随着输入顺序进行升序排列;
利用函数read读取/sys/class/input/inputX下的Sensors设备的名称;
将所述读取的Sensors设备的名称与驱动平台设置的Sensors设备的名称进行比较,
到硬件中与所述读取的Sensors设备的名称一致模组;
确定当前已注册的Sensors设备的节点路径及X的取值。
4.根据权利要求1所述的移植处理方法,其特征在于,所述读取方向变量配置文件并解析Sensor方向值,比对所述预设的Sensor方向值与所需Sensor方向值,调整Sensor设备的方向,包括如下步骤:
利用函数Gsensor_cfg读取方向变量配置文件Gsensor.cfg,在所述Gsensor.cfg文件中记录的所有模组中确定与所读取的Sensor设备名称匹配的模组,并解析相应的匹配模组预设的Sensor方向值;
其中,所述Gsensor.cfg文件用于记录驱动平台支持的所有模组的方向值;
当读取到true值时,预设的Sensor方向值为正方向值;当读取到false值时,预设的Sensor方向值为负方向值;所述正方向值为正数+1,所述负方向值为负数-1;判断所需要Sensor的方向值与预设的Sensor方向值是否一致,如果判断结果为一致,则将不需要调整Sensor的方向;如果判断结果为不一致,则将调整Sensor的方向为与预设Sensor方向的反方向。
5.根据权利要求1所述的移植处理方法,其特征在于,所述获取Sensor设备对应的Sensor_t结构体信息,将硬件中使用的模组添加到传感器列表中,包括如下步骤:根据模组的名称所在的驱动平台中存储位置,获取相应Sensor_t结构体信息,利用get_sensors_list函数将硬件中使用的模组添加到传感器列表中;
所述启动相应的线程调用Sensors HAL层中的poll函数获取底层相应设备的数据包括如下步骤:
利用Poll函数将实时读取上报值,根据转化公式进行相应的数据转换,并将转换后数值上报给Android系统使用;
所述转化公式为:转换后数值=(G/转换量值)×方向值×上报值;
其中:G为单位值且为常数,不同类型的Sensor设备对应的G值不同;转换量值为常数,不同类型的S
ensor设备对应的转换量值不同;
所述Sensor_t结构体用于描述Sensor设备特性信息;所述Sensor_t结构体所描述信息包括传感器的名称、传感器的版本、传感器的句柄、传感器的类型、传感器的最大范围、传感器的解析度、传感器的消耗能源、事件间隔最小时间。
6.一种Android系统Sensor HAL层兼容多种同种Sensor设备的移植处理装置,其特征在于,包括初始化模块、设备读取模块、方向调整模块、模组添加模块和数据读取模块,其中:
所述初始化模块,用于根据Linux系统中支持的Sensors驱动,对SensorHAL层进行初始化处理;在初始化时,设置驱动平台所支持的所有模组的名称及转换值;预设Gsensor方向值路径及Sensor设备的路径,预设Gsensor方向变量的识别名称并配置相应的方向变量配置文件;针对不同Sensor设备设置相应的Sensor_t结构体;其中,设置的每个模组的名称与Sensor设备注册到Linux输入子系统中的设备名称一一对应;
所述设备读取模块,用于在Sensors设备的Driver注册到Linux的输入子系统后,Sensors HAL层根据生成Sensors设备对应的节点,确定获取当前已注册的Sensors设备的名称及模组;
所述方向调整模块,用于在Android HAL层确定获取当前已注册的Sensor设备名称后,根据预设的Sen
sor设备方向值的路径,读取所述方向变量配置文件并解析预设的Sensor方向值,比对所述预设的Sensor方向值与所需Sensor方向值,调整Sensor设备的方向;
所述模组添加模块,用于获取Sensor设备对应的Sensor_t结构体信息,将硬件中使用的模组添加到传感器列表中,实现将所述模组注册到Android层;
所述数据读取模块,用于所述Android层启动相应的线程调用Sensors HAL层中的poll函数获取底层相应设备的数据。
7.根据权利要求6所述的移植处理装置,其特征在于,所述初始化模块包括记录子模块、方向预设子模块和第一设置子模块,其中:
记录子模块,用于在确定驱动平台所支持的所有模组的名称及转换值后,利用结构体name记录模组的设备名称以及Sensor的转换量值;其中:转换量值为Sensor设备的Driver上报的最大值;
所述方向预设子模块,用于根据不同模组的名称,分别设置相应模组的X、Y、Z轴的方向以及是否将XY轴交换的标志;所述Gsensor方向变量的识别名称用于识别Sensor设备的方向值;将设置的Gsensor方向变量信息配置在方向变量配置文件Gsensor.cfg中并保存;
所述第一设置子模块,用于根据不同Sensor设备,设置相应的Sensor_t结构体的描述信息。
8.根据权利要求6所述的移植处理装置,其特征在于,所述设备读取模块包括查子模块、第一读取子模块、比对子模块和确定子模块,其中:
所述查子模块,用于在当前Sensors设备的Driver注册到Linux的输入子系统后,Sensors HAL层根据所述输入子系统生成的且与所述当前Sensors设备一一对应的节点的存储位置,到所述当前Sensors设备对应的input设备存储位置;
其中:所述设备的节点存在于“/sys/class/input/inputX”目录下,X为正整数,X数值等于根据Linux系统的输入设备对应的输入顺序序号;X数值随着输入顺序进行升序排列;
所述第一读取子模块,用于利用函数read读取/sys/class/input/inputX下的Sensors设备的名称;
所述比对子模块,用于将所述读取的Sensors设备的名称与驱动平台设置的Sensors 设备的名称进行比较,到硬件中与所述读取的Sensors设备的名称一致模组;
所述确定子模块,用于确定当前已注册的Sensors设备的节点路径及X的取值。
9.根据权利要求6所述的移植处理装置,其特征在于,所述方向调整模块包括匹配解析子模块和调整子模块,其中:
所述匹配解析子模块,用于利用函数Gsensor_cfg读取方向变量配置文件Gsensor. cfg,在所述Gsensor.cfg文件中记录的所有模组中确定与所读取的Sensor设备名称匹配的模组,并解析相应的匹配模组预设的Sensor方向值;
其中,所述Gsensor.cfg文件用于记录驱动平台支持的所有模组的方向值;
所述调整子模块,用于当读取到true值时,预设的Sensor方向值为正方向值;当读取
到false值时,预设的Sensor方向值为负方向值;所述正方向值为正数+1,所述负方向值为负数-1;判断所需要Sensor的方向值与预设的Sensor方向值是否一致,如果判断结果为一致,则将不需要调整Sensor的方向;如果判断结果为不一致,则将调整Sensor的方向为与预设Sensor方向的反方向。
10.根据权利要求6所述的移植处理装置,其特征在于,所述模组添加模块包括模组添加子模块,其中:
所述模组添加子模块,用于根据模组的名称所在的驱动平台中存储位置,获取相应Sensor_t结构体信息,利用get_sensors_list函数将硬件中使用的模组添加到传感器列表中;
所述数据读取模块包括数据转化上报子模块,其中:
所述数据转化上报子模块,用于利用Poll函数将实时读取上报值,根据转化公式进行相应的数据转换,并将转换后数值上报给Android系统使用;
所述转化公式为:转换后数值=(G/转换量值)×方向值×上报值;
其中:G为单位值且为常数,不同类型的Sensor设备对应的G值不同;转换量值为常数,不同类型的Sensor设备对应的转换量值不同。

本文发布于:2024-09-25 18:19:59,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/747828.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:设备   方向   模组   模块
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议