MTK 虚拟 sensor bring up (pick up) sensor2.0
pick up bring up sensor2.0
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的更多相关文章
- MTK 虚拟 sensor bring up (pick up) sensor1.0
pick up bring up sensor1.0 1.pick up对比 2.SCP 1.添加驱动文件 2.添加编译环境(打开开关) 注:编译过程中如果显示内存不够 3.修改底层数据上报方式 3. ...
- 联发科 (MTK) sensor bring up
MT6768平台 1.添加驱动文件 2.添加硬件配置支持 3.添加硬件配置 4.添加编译配置 5.分配空间(非必要,当代码量超过当前空间大小时将会报错,根据报错log改大小即可.) 6.兼容配置 7. ...
- MTK 平台sensor arch 介绍-hal
MTK 平台sensor arch 介绍-hal 一:整体框架 二:具体流程简介 AP-HAL: (1)init & control flow 我们以前文的originchannel 的 ac ...
- MTK 平台sensor arch 介绍-scp
架构介绍 路径:vendor/mediatek/proprietary/tinysys/scp 1.[build]编译相关 2.[driver]scp 的driver,I2C,power,eint 3 ...
- 高通(QCOM)sensor bring up
高通7150平台 1.添加驱动文件 2.添加编译 3.配置json文件 4.高通默认配置 5.部分sensor外挂电源 6.遇到的问题 1.添加驱动文件 路径:adsp_proc/ssc/sensor ...
- 在IIS7.5上添加.NET4.0程序的虚拟目录时提示ASP.NET 4.0尚未在 Web 服务器上注册
使用VS2010创建web应用程序时出现如下提示: ASP.NET 4.0尚未在 Web 服务器上注册. 解决方法: 首先IIS应用程序池添加 net framework4.0版本. 接着找到C:\W ...
- Android sensor架构分析
一.其主要框架如下图所示: 二.sensor的JNI层:android_hardware_SensorManager.cpp (frameworks\base\core\jni) 注册JN ...
- Mtk Ft6306 touch 驱动 .
1.1. MTK Touch 驱动的组成Mtk Touch driver 驱动包括:Mtk platform 虚拟平台设备驱动.Module touch IC 驱动.Input subsys ...
- 高通HAL层之Sensor HAL
高通的HAL层其实分为两种,一种是直接从kernel这边报数据上来的,由sensor HAL层来监听,另一种是走ADSP的模式,HAL层是通过qmi的形式进行监听的: 走ADSP架构的可以看下面的博客 ...
随机推荐
- Django项目引入NPM和gulp管理前端资源
前言 之前写了一篇<Asp-Net-Core开发笔记:使用NPM和gulp管理前端静态文件>,现在又来用Django开发项目了,之前我搞了一个Django的快速开发脚手架「DjangoSt ...
- c语言实现循环单链表
//初始化 Node*InitList() { Node*head=(Node*)malloc(sizeof(Node)); head->next=NULL; head->data=-1; ...
- spring-注入集合对象
1.创建Stu类 package com.spring.collections; import java.util.Arrays; import java.util.List; import java ...
- LC-844
给定 s 和 t 两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回 true .# 代表退格字符. 注意:如果对空文本输入退格字符,文本继续为空. 示例 1: 输入:s = &qu ...
- iwdg和wwdg
一.什么是看门狗? 在单片机工作的时候经常会出现受到外界电磁场的干扰导致程序跑飞,而陷入死循环,而使整个系统陷入无法正常工作的状态. "看门狗"是一种专门用于监测单片机程序运行状态 ...
- 安装 UE 源码版
# 安装 UE 源码版 ## 下载安装包 > - 先去 Github 找 UE 官方开源的引擎组(这个需要申请加入) > - 加入后找到开源的源码版项目下载 zip 到本地 > - ...
- linux lvm逻辑卷管理之lvdisplay命令
linux 磁盘管理分fdisk parted 和LVM三种方式,我们这里重点是说lvm 我们来看看LVM基本术语(lvm和传统fdisk分区方式有区别)由于传统的磁盘管理不能对磁盘进行磁盘管理,因此 ...
- 10. MySQL基础-02条件查询、排序查询
2. 条件查询 语法 select 查询列表 from 表名 where 筛选条件: 分类 按条件表达式筛选 简单的条件运算符:> < = != <> >= ⇐ 按逻 ...
- Java语言学习day28--8月03日
###10接口作为方法参数与返回值 * A: 接口作为方法参数 接口作为方法参数的情况是很常见的,经常会碰到.当遇到方法参数为接口类型时,那么该方法要传入一个接口实现类对象.如下代码演示. //接 ...
- Springmvc 如何配置一个MAVEN项目,eclipse视图详解
1,首先主页创建一个maven project项目, 2-3,创建完成会报错因为缺少WEB-INF文件右键点击选取,会自动创建web.xml文件 4 ,调试版本 因为默认创建的maven版本不支持,所 ...