分析一下android2.3中SensorBase.cpp的程序流程

本文详细分析了Android 2.3版本中SensorBase.cpp文件的功能和工作流程,包括构造函数、设备的打开与关闭、上报延迟设置以及时间戳获取等关键操作。特别强调了openInput()方法,该方法通过遍历/dev/input/目录下的字符设备,找到匹配的传感器设备并返回其句柄。
摘要由CSDN通过智能技术生成

在移植sensor的hal层代码时, SensorBase.cpp作为所有sensor类的基类, 定义了一些很有用的方法.

下面jwisp结合实际实验, 来跟大家分析下SensorBase的作用和流程

SensorBase::SensorBase(
        const char* dev_name,
        const char* data_name)
    : dev_name(dev_name), data_name(data_name),
      dev_fd(-1), data_fd(-1)
{
    data_fd = openInput(data_name);
}

SensorBase的构造, 子类会先调用父类的这个方法,

在SensorBase构造中, 将子类传来的设备名称dev_name和数据设备名data_name赋值本类成员,

然后通过openInput函数,打开data_name然后将open后的句柄, 传递给data_fd

SensorBase::~SensorBase() {
    if (data_fd >= 0) {
        close(data_fd);
    }
    if (dev_fd >= 0) {
        close(dev_fd);
    }
}

析构函数, 关闭data_fd和dev_fd

int SensorBase::open_device() {
    if (dev_fd<0 && dev_name) {
        dev_fd = open(dev_name, O_RDONLY);
        LOGE_IF(dev_fd<0, "Couldn't open %s (%s)", dev_name, strerror(errno));
    }
    return 0;
}
int SensorBase::close_device() {
    if (dev
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值