1.SCP侧的配置

(1) 放置驱动pickup.c

路径:
vendor/mediatek/proprietary/tinysys/scp/middleware/contexthub/VIRT_Driver

(2) 添加底层驱动文件编译开关

路径:
vendor/mediatek/proprietary/tinysys/scp/project/RVxx_A/project.mk
CFG_PICKUP_SUPPORT = yes

(3) 加入编译文件

路径:
vendor/mediatek/proprietary/tinysys/scp/project/RVxx_A//platform/features/chre.mk
######## pickup ########
ifeq ($(CFG_PICKUP_SUPPORT),yes)
C_FILES += $(SCP_MIDDLEWARE_DIR)/contexthub/VIRT_Driver/pickup.c
endif

(4) 增加数据上报方式

路径:
vendor/mediatek/proprietary/tinysys/scp/middleware/contexthub/contexthub_fw.h
#define SENSOR_TYPE_PICK_UP_GESTURE 25 /* these three type can be confirguratured */
typedef enum {
GESTURE_NONE,
SHAKE,
TAP,
TWIST,
FLIP,
SNAPSHOT,
ANSWERCALL,
PICKUP,
GESTURE_MAX
} gesture_type_t;
路径:
vendor/mediatek/proprietary/tinysys/scp/middleware/contexthub/contexthub_fw.c
uint8_t chreTypeToMtkType(uint8_t sensortype)
{
...
case SENS_TYPE_PICK_UP:
return SENSOR_TYPE_PICK_UP_GESTURE;
...
}
uint8_t mtkTypeToChreType(uint8_t sensortype)
{
...
case SENSOR_TYPE_PICK_UP_GESTURE:
return SENS_TYPE_PICK_UP;
...
}
static void initSensorReportingInfo(void)
{
...
sensorReportingMode[SENSOR_TYPE_PICK_UP_GESTURE] = onChange;
sensorAccurancyMode[SENSOR_TYPE_PICK_UP_GESTURE] = SENSOR_STATUS_ACCURACY_HIGH;
...
}
static void contextHubTransferOnChangeSensor(uint8_t mtk_type, const struct mtkActiveSensor *sensor)
{
case SENSOR_TYPE_PICK_UP_GESTURE:
case SENSOR_TYPE_FOD:
case SENSOR_TYPE_AOD:
case SENSOR_TYPE_NONUI:
osLog(LOG_INFO, "mtk_type: %d send flush action\n", mtk_type);
dummy.value[0] = (int32_t)(sensor->buffer.single[numSamples].idata);
break;
}

(5)修改SENS的type

路径:
/vendor/mediatek/proprietary/hardware/contexthub/firmware/inc/sensType.h
#define SENS_TYPE_PICK_UP 40

2.kernel层的配置

(1) 修改hf_sensor_type.h

注: type的顺序和ID的顺序需要对应

路径:
kernel-4.14/drivers/misc/mediatek/sensor/2.0/core/hf_sensor_type.h
enum {
...
SENSOR_TYPE_PICK_UP_GESTURE,
...
SENSOR_TYPE_SENSOR_MAX,
};
enum {
...
ID_PICK_UP_GESTURE,
...
ID_SENSOR_MAX,
};

(2) 修改mtk_nanohub.c

路径:
kernel-4.14/drivers/misc/mediatek/sensor/2.0/mtk_nanohub/mtk_nanohub.c
static void mtk_nanohub_init_sensor_info(void)
{
...
p = &sensor_state[SENSOR_TYPE_PICK_UP_GESTURE];
p->sensorType = SENSOR_TYPE_PICK_UP_GESTURE;
p->rate = SENSOR_RATE_ONCHANGE;
p->gain = 1;
strlcpy(p->name, "pickup", sizeof(p->name));
strlcpy(p->vendor, "mtk", sizeof(p->vendor));
...
}
static int mtk_nanohub_report_to_manager(struct data_unit_t *data)
{
...
case ID_PICK_UP_GESTURE:
event.timestamp = data->time_stamp;
event.sensor_type = id_to_type(data->sensor_type);
event.action = data->flush_action;
event.word[0] = data->smd_t.state;
break;
...
}

3.HAL层的修改

(1) 首先修改HfManager.cpp和kernel通信

路径:  /vendor/mediatek/proprietary/hardware/sensor/2.0/core/HfManager.cpp
int HfLooper::eventConvertAll(sensors_event_t *dst, hf_manager_event *src) {
...
case SENSOR_TYPE_PICK_UP_GESTURE:
dst->type = 33171036;
dst->data[0] = (float)src->word[0] / gain;
ALOGE("SENSOR_TYPE_PICK_UP_GESTURE in hal data=%d\n", src->word[0]);
break;
...
}

(2) 添加sensortype:这个在55之前,不需要添加,应该是沿用了MTK的定义

(3) 加入通道

路径:
/vendor/mediatek/proprietary/hardware/sensor/2.0/hal/SensorContext.cpp
static int findChannel(int sensor_handle) {
switch (sensor_handle) {
...
case SENSOR_TYPE_PICK_UP_GESTURE:
return ORIGIN_CHANNEL;
...
}
}

(4) 修改sensorList

路径:
/vendor/mediatek/proprietary/hardware/sensor/2.0/hal/SensorList.cpp
 memset(&sensor, 0, sizeof(struct sensor_t));
sensor.name = "pickup Wakeup";
sensor.vendor = "XXXX";
sensor.version = PICK_UP_VERSION;
sensor.handle = SENSOR_TYPE_PICK_UP_GESTURE;
sensor.type = XXXXXXX;
sensor.maxRange = PICK_UP_RANGE;
sensor.resolution = PICK_UP_RESOLUTION;
sensor.power = PICK_UP_POWER;
sensor.minDelay = PICK_UP_MINDELAY;
sensor.fifoReservedEventCount = PICK_UP_FIFO_RESERVE_COUNT;
sensor.fifoMaxEventCount = PICK_UP_FIFO_MAX_COUNT;
sensor.stringType = "XXX pick up sensor";
sensor.maxDelay = PICK_UP_MAXDELAY;
sensor.flags = SENSOR_FLAG_SPECIAL_REPORTING_MODE|SENSOR_FLAG_WAKE_UP;
mSensorList.push_back(sensor);

MTK 虚拟 sensor bring up (pick up) sensor2.0的更多相关文章

  1. MTK 虚拟 sensor bring up (pick up) sensor1.0

    pick up bring up sensor1.0 1.pick up对比 2.SCP 1.添加驱动文件 2.添加编译环境(打开开关) 注:编译过程中如果显示内存不够 3.修改底层数据上报方式 3. ...

  2. 联发科 (MTK) sensor bring up

    MT6768平台 1.添加驱动文件 2.添加硬件配置支持 3.添加硬件配置 4.添加编译配置 5.分配空间(非必要,当代码量超过当前空间大小时将会报错,根据报错log改大小即可.) 6.兼容配置 7. ...

  3. MTK 平台sensor arch 介绍-hal

    MTK 平台sensor arch 介绍-hal 一:整体框架 二:具体流程简介 AP-HAL: (1)init & control flow 我们以前文的originchannel 的 ac ...

  4. MTK 平台sensor arch 介绍-scp

    架构介绍 路径:vendor/mediatek/proprietary/tinysys/scp 1.[build]编译相关 2.[driver]scp 的driver,I2C,power,eint 3 ...

  5. 高通(QCOM)sensor bring up

    高通7150平台 1.添加驱动文件 2.添加编译 3.配置json文件 4.高通默认配置 5.部分sensor外挂电源 6.遇到的问题 1.添加驱动文件 路径:adsp_proc/ssc/sensor ...

  6. 在IIS7.5上添加.NET4.0程序的虚拟目录时提示ASP.NET 4.0尚未在 Web 服务器上注册

    使用VS2010创建web应用程序时出现如下提示: ASP.NET 4.0尚未在 Web 服务器上注册. 解决方法: 首先IIS应用程序池添加 net framework4.0版本. 接着找到C:\W ...

  7. Android sensor架构分析

      一.其主要框架如下图所示:     二.sensor的JNI层:android_hardware_SensorManager.cpp (frameworks\base\core\jni) 注册JN ...

  8. Mtk Ft6306 touch 驱动 .

    1.1.    MTK Touch 驱动的组成Mtk  Touch  driver 驱动包括:Mtk platform 虚拟平台设备驱动.Module touch IC 驱动.Input subsys ...

  9. 高通HAL层之Sensor HAL

    高通的HAL层其实分为两种,一种是直接从kernel这边报数据上来的,由sensor HAL层来监听,另一种是走ADSP的模式,HAL层是通过qmi的形式进行监听的: 走ADSP架构的可以看下面的博客 ...

随机推荐

  1. Hive进行数据统计时报错:org.apache.hadoop.mapreduce.v2.app.MRAppMaster: Error starting MRAppMaster

    报错详情: 2020-04-09 22:56:58,827 ERROR [Listener at 0.0.0.0/45871] org.apache.hadoop.mapreduce.v2.app.M ...

  2. DB2表数据导出、导入及常用sql使用总结

      一.DB2数据的导出: export to [path(例:D:"TABLE1.ixf)]of ixf select [字段(例: * or col1,col2,col3)] from ...

  3. SpringBoot-总结

    SpringBoot一站式开发 官网:https://spring.io/projects/spring-boot Spring Boot可以轻松创建独立的.基于Spring的生产级应用程序,它可以让 ...

  4. Istio实践(1)-环境搭建及应用部署

    1. Istio简介 Istio是最初由IBM,Google和Lyft开发的服务网格的开源实现.它可以透明地分层到分布式应用程序上,并提供服务网格的所有优点,例如流量管理,安全性和可观察性. 它旨在与 ...

  5. redis 指定db库导入导出数据

    最近根据之前的项目重新改编一个新的项目,发现上一个项目的搭建者,把一些区域权限和划分放在redis上存储,因此不得不照搬过来,所以搜索一下相关如何做的 发现一个比较简单的做法,记录一下操作过程,方便以 ...

  6. Hyperledger Fabric节点的动态添加和删除

    前言 在Hyperledger Fabric组织的动态添加和删除中,我们已经完成了在运行着的网络中动态添加和删除组织.本文将在其基础上,详细介绍了如何在 soft 组织上添加新的 peer2 节点,并 ...

  7. Java学习day26

    进程.多任务 1.例如吃饭的时候玩手机,边上厕所边玩手机,看似是同时做多个事情,本质上我们的大脑在同一时间只做了一件事情,这就是多任务 2.道路窄的时候容易造成拥堵,可以拓宽道路,加多车道,同一个方向 ...

  8. 2021-01-25 cf #697 Div3 C题(超时,换思路减少复杂度)

    题目链接:https://codeforces.com/contest/1475/problem/C 题意要求:需组成的2对,男的序号不能重,女的序号不能重 比如这例 输入: 行1--测试个数 行1` ...

  9. 1903021116-吉琛-Java第四周作业-程序编写

    项目 内容 课程班级博客链接 19级信计班 这个作业要求链接 Java分支语句学习 https://edu.cnblogs.com/campus/pexy/19xj/homework/12563 我的 ...

  10. python基础练习题(题目 将一个整数分解质因数。例如:输入90,打印出90=2*3*3*5)

    day9 --------------------------------------------------------------- 实例014:分解质因数 题目 将一个整数分解质因数.例如:输入 ...