热门内容

公众号"MAKE1"

获取行业最新资讯

请扫码添加

专业客服企业微信

Android HAL

简介

Android HAL

对于Android HAL 最常添加和更换的主要是sensor hal,sensor hal 的选择和添加如下:

(1)在device/leadcore/lc186x/BoardConfig.mk 文件中修改所用sensor 模块名:

######sensor type select######

#choose acc type

ACC_DEVICE_TYPE4 := ACC_MMA8X5X

红色部分修改为要添加/修改的sensor 模块名。lc186x 表示所用板子名称。

(2)在/hardware/leadcore/libsensor/sensors_hal/中添加厂商提供的HAL 代码;

代码放置在…/sensors_hal /acc_mma/目录下:

AccSensorMma8x5x.cpp

AccSensorMma8x5x.h

(3) acc_include.h 文件做如下修改:

#ifdef SENSOR_ACC_MMA8X5X

#include "acc_mma/AccSensorMma8x5x.h"

#endif

(4)Android.mk 中的相关修改参考如下:

ifeq ($(ACC_DEVICE_TYPE4), ACC_MMA8X5X)

LOCAL_CFLAGS += -DSENSOR_ACC -DSENSOR_ACC_MMA8X5X

LOCAL_SRC_FILES += acc_mma/AccSensorMma8x5x.cpp

(5) sensors.cpp 相关修改如下:

1. 在static const struct support_sensor_list SupportSensorList[]中新增支持的sensor 定义;

#ifdef SENSOR_ACC_MMA8X5X

{ accsensor_probe, ACC_MMA8X5X,/*此字段用于多供兼容*/

{ "acc_mma8x5x", "Freescale Semiconductor Inc.",

1, SENSORS_ACCELERATION_HANDLE,

SENSOR_TYPE_ACCELEROMETER, (2*GRAVITY_EARTH),

(GRAVITY_EARTH / (0x4000)), 0.30f, 20000, 0, 0, { }

},

},

#endif

注意accsensor_probe 函数的实现,这里采用通用的实现;

2. sensors_poll_context_t::sensors_poll_context_t()类构造函数中增加新sensor 的支持:

#ifdef SENSOR_ACC_MMA8X5X

case ACC_MMA8X5X:

{

mSensors[acc] = new AccSensorMma();

mPollFds[acc].fd = mSensors[acc]->getFd();

mPollFds[acc].events = POLLIN;

mPollFds[acc].revents = 0;

break;

}

#endif
4
 条评论
相关内容推荐