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架构的可以看下面的博客 ...
随机推荐
- Java/C++实现策略模式---旅游出行方式
旅游的出行方式有乘坐飞机旅行.乘火车旅行和自行车游,不同的旅游方式有不同的实现过程,客户可以根据自己的需要选择一种合适的旅行方式. 类图: Java代码: public class Person { ...
- 百度图像识别SDK实验
软件构造实验作业 实验名称:百度图像识别SDK实验 班级:信1905-1 学号:20194171 姓名:常金悦 一. 实验要求 每个步骤必须截图并说明 二.实验步 ...
- 【Android开发】Android6.0请求权限方式
记录一下最普通的动态请求权限的方法: private int requestCode == 123; //判断当前系统的版本 if(Build.VERSION.SDK_INT >= 23){ i ...
- Linux上部署net6应用
前言 .net6都出来了,作为一名.net搬砖工却一直都在windows下部署应用,还未尝试过linux环境下部署应用.参考福禄网络研发团队的相关博客,学习一下如何将应用部署到linux系统. . ...
- Java---变量和基本数据类型
变量 在Java中,变量分为两种:基本类型的变量和引用类型的变量. 在Java中变量必须先定义后使用,在定义变量的时候可以给它一个初始值.如果不写初始值,默认为0或空. 变量的一个重要特点是可以重新赋 ...
- python输出二维数组中,每行N个最大值的索引
`import heapq import numpy as np import random a = np.random.randint(50,size= (4,5)) a = np.array(a) ...
- 模拟FCFS调度算法(先来先服务)
文章目录 一.FCFS的介绍 二.代码演示 三.代码分析 1.使用节点模拟进程 2.SimulateFCFS(核心模拟FCFS类) 3.创建一个节点为n的队列(模拟就绪队列) 4.核心计算分析 5.输 ...
- SpringCloudAlibaba注册中心与配置中心之利器Nacos实战与源码分析(上)
不断踩坑并解决问题是每个程序员进阶到资深的必要经历并以此获得满足感,而不断阅读开源项目源码和总结思想是每个架构师成长最佳途径.本篇拉开SpringCloud Alibaba最新版本实战和原理序幕,以工 ...
- JavaScript学习总结4-规范
昨天学习了JS的严格检查模式,今天做一点补充 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 & ...
- css 实现随风摆动
无标题文档 @-webkit-keyframes open { 0% { -webkit-transform: rotateX(-120deg); } 25% { -webkit-transform: ...