MTK虚拟sensor梳理
一 虚拟sensor注册
以倾斜检查虚拟sensor为例,梳理虚拟sensor的控制流和数据流
倾斜虚拟sensor驱动在SCP virt_driver里tilt_detector.c,MTK SCP侧的虚拟sensor都是存放在这个目录下。
wakeup------抬起唤醒
liftDetector----拾起察觉
liftPdDetector—拾起察觉(带防误触检查)
stepRecognition —虚拟计步器
tiltDetectorStart()
{
mTask.taskID = taskId:
mtask.handle = sensorRegister(&mSi, &mSops,NULL,true);//注册操作接口
osEventSubscribe(taskId,EVT_APP_START);//加入实际并执行,在tiltDetectorHandleEvent中该事件仅打印了log “TILT EVT_APP_START”后就删除了该事件的监听
}
二 虚拟sensor控制流程
HAL层:tilt是归属于Situation.cpp管理,该类还管理pickup_gesture motion_detect wake_gesture等虚拟sensor,但计步器有自己独立的HAL驱动stepCounter.cpp
使能:
Int SituatiionSensor::enale(int32_t handlle, int en) //抬腕sensor handle = 21
{
Open() //打开kernel的驱动节点situactive
Write() //写1
}
对节点situactive执行