Andorid HAL层sensor读取驱动数据

使用的是RK3588的源码进行分析,在安卓中都是通过hal层读取数据的。主要是跟了一下流程进行分析。

1.读取流程图

2.代码分析

文件路径/hardware/rockchip/sensor/st/sensor.c 这是rk3588在hal层对sensor驱动数据读取的总文件入口文件。

调用关系sensors_module_methods->open_sensors->init_nusensors(module, device);

2.1init_nusensors(module, device);

主要是建立了sensors_poll_context_t();对象,设置了对应的回调函数,重点在sensors_poll_context_t();对象。

其构造函数如下

 

主要的作用是new对应的驱动类型的对象。

2.2sensors_poll_context_t::pollEvents函数

使用 nb = poll(mPollFds, numFds, polltime)进行事件的监控其中polltime的值为-1;没有事件发生则一直等待。

发生相应的事件后会调用nb = sensor->readEvents(data, count);对GyroSensor来说就是下面的函数

int GyroSensor::readEvents(sensors_event_t* data, int count)

2.3int GyroSensor::readEvents(sensors_event_t* data, int count)函数

函数中调用ssize_t n = mInputReader.fill(data_fd);计算事件的数量,并对缓冲区的可用大小进行了变更。

判断是否发生对应的数据类型调用processEvent(event->code, event->value);把数据写入。

2.4processEvent(event->code, event->value);函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值