---【sensor框架分析】
文章平均质量分 87
Achillisjack
这个作者很懒,什么都没留下…
展开
-
android input子系统分析---驱动层
前言:Input子系统包括标准Linux,Android核心驱动,Android相关设备驱动,G-sensor的设备驱动程序。传感器作为一种输入设备,也是通过input系统把其数据上报给系统,或者通过input系统得到用户的配置信息。这里以传感器为例学习input driver层。Sensor驱动从通过I2C从寄存器中读取sensor值,然后写入/dev/input/目录下对应的文原创 2017-07-10 22:55:01 · 1770 阅读 · 0 评论 -
HAL接口层 --- 硬件接口
3, HAL接口层所有的HAL moudle需要涉及如下三个关键结构体:struct hw_module_t;struct hw_module_methods_t;struct hw_device_t;用户一般需要基于上面这些结构体设计如下两个结构体:struct xxx_module_t {struct hw_module_t common;.};自定义一个模块原创 2018-03-25 10:22:32 · 2021 阅读 · 0 评论 -
sensor中间层 --- NativeSensorManager
NativeSensorManagerNativeSensorManager定义如下,class NativeSensorManager : public Singleton {friend class Singleton;NativeSensorManager();~NativeSensorManager();struct sensor_t sensor_list[MAX_SEN原创 2018-03-25 10:15:41 · 917 阅读 · 1 评论 -
sensor中间层 --- CalibrationManager
2, sensor中间层HAL的中间层通过几个类来描述和管理每个sensor,类CalibrationManager管理sensor用到的校正算法模块,NativeSensorManager类则起承上启下的作用, framework层访问标准的HAL接口,然后这些HAL接口再通过NativeSensorManager类接口访问到具体的sensors,同时所有sensor信息也是由这个原创 2018-03-25 10:06:05 · 844 阅读 · 0 评论 -
sensor驱动层 --- virtual sensor
virtual sensorVirtualSensor是由实际的sensor 虚拟出来的,所有的Virtual Sensor都是class VirtualSensor类的一个实例;VirtualSensor类的定义如下,class VirtualSensor : public SensorBase {sensors_event_t mLastEvent;bool reportL原创 2018-03-25 10:01:09 · 2696 阅读 · 0 评论 -
sensor驱动层 --- light sensor
概述:Android的硬件抽象层,简单来说,就是对Linux内核驱动程序的封装,向上提供接口,屏蔽低层的实现细节。也就是说,把对硬件的支持分成了两层,一层放在用户空间(User Space),一层放在内核空间(Kernel Space),其中,硬件抽象层运行在用户空间,而Linux内核驱动程序运行在内核空间。为什么要这样安排呢?把硬件抽象层和内核驱动整合在一起放在内核空间不可行吗?从技术实现的角度...原创 2018-03-25 09:57:36 · 6309 阅读 · 0 评论 -
android sensor 框架分析---sensor 总结
7 总结Sensor总的框架图如下,形象一点讲,整个Sensor的软件架构就像是水泵抽水灌溉。Service扮演电机的角色,它不断的产生抽水的动力,并将水输送至目的地(APP),驱动扮演泵的角色,它负责完成抽水的必要准备并抽水,HAL则很像是连接电机和泵的管道。driver可以逻辑上分为三部分,一部分支持它本身的功能,i2c读写,中断或者轮询处理。第二部分为sysfs文原创 2017-07-06 22:29:42 · 3229 阅读 · 0 评论 -
android sensor 框架分析---sensor native分析
6,sensor native分析获取sensor数据除了android上层进行开发之外,还可以直接进行native开发。6.1 开发说明初始化,sensorManager = ASensorManager_getInstance(); //获取AsensorManager对象 //设置加速度的值accelerometer = ASensorManager_getDefault原创 2017-07-06 22:27:54 · 4628 阅读 · 0 评论 -
android sensor 框架分析---sensor数据流分析
5,sensor数据流分析前面几章做了很多准备和铺垫,这章终于可以分析sensor数据的传输流程了。主要步骤如下,1,服务端通过HAL从驱动文件节点中获取sensor数据。2,服务端通过管道发送数据。3,客户端通过管道读取数据。4,客户端吐出数据。5.1服务端获取数据启动sensor服务之后,就会调用SensorService.cpp的threadLoop方法,该方法首原创 2017-07-06 22:25:46 · 4515 阅读 · 0 评论 -
android sensor 框架分析---客户端和服务端的连接
4,客户端和服务端的连接在上一章初始化的过程中论述到, SensorManager.cpp会通过binder机制调用sensor服务的getSensorList方法获取sensor的相关信息。那数据是通过binder机制调用服务端获取的吗?其实, java层的SystemSensorManager.java和SensorManager.cpp是对应的;java层的SensorEve原创 2017-07-06 22:17:46 · 1817 阅读 · 1 评论 -
android sensor 框架分析---客户端
3,客户端分析3.1 客户端开发Sensor开发很容易,因为sensor的值都是底层上报的,不需要上层做其他操作。1,获取SensorManager,并且调用其getDefaultSensor方法获取对应的sensor。2,调用SensorManager的registerListener方法进行注册,监听sensor值的变化。3,继承SensorEventListener接口,原创 2017-07-06 22:12:05 · 2292 阅读 · 2 评论 -
android sensor 框架分析---服务端
前言:相对于其他模块, Sensor的API还是非常简洁的.对Sensor的开发也很简单。Android 6.0 系统支持的传感器多达26种,加速度传感器 (accelerometer)、磁力传感器(magnetic field)、方向传感器(orientation)、陀螺仪(gyroscope)、环境光照传感器(light)、压力传感器(pressure)、温度传感器(tempera原创 2017-07-06 22:04:17 · 4870 阅读 · 0 评论 -
android input子系统分析---事件层
3 核心层核心层主要都是在input.c中处理。这里会处理各种Event,各种sensor,触摸事件,按键事件等等。流程图如下,input_event方法直接调用input_handle_event方法进行处理,void input_event(struct input_dev *dev, unsigned int type, unsigned int code, i原创 2017-07-10 23:03:18 · 1558 阅读 · 0 评论 -
HAL接口层 --- hardware模块接口
下面分析一个文件hardware/libhardware/hardware.c,这个文件提供了一些函数,上层通过这些函数可以用来查找加载HAL库,以及获取指定HAL库的模块变量;load方法如下,static int load(const char *id, const char *path,const struct hw_module_t **pHmi){int status;原创 2018-03-25 10:28:34 · 2173 阅读 · 0 评论