virtual sensor
VirtualSensor是由实际的sensor 虚拟出来的,所有的Virtual Sensor都是class
VirtualSensor类的一个实例;
VirtualSensor类的定义如下,
class VirtualSensor : public SensorBase {
sensors_event_t mLastEvent;
bool reportLastEvent;
const SensorContext *context;
sensors_event_t mBuffer[MAX_EVENTS];
sensors_event_t* mRead;
sensors_event_t* mWrite;
sensors_event_t* mBufferEnd;
ssize_t mFreeSpace;
public:
VirtualSensor(const struct SensorContext *i);
virtual ~VirtualSensor();
•••
这个类被定义在文件hardware/qcom/sensors/VirtualSensor.h中,其函数实现在对应
的文件VirtualSensor.cpp 中;
reportLastEvent是报告最后一个事件标志,当重复使能某个sensor时,该标志会被置位,当读取该sensor 中的事件时,会先读取先前上报的
最后一个sensor 事件,由mLastEvent 表示最后一个上报的sensor 事件;每一个sensor 都有一个结构体SensorContext进行描述,这个结构体
有一个类型为SensorBase,名称 为driver的指针指向对应的sensor 驱动,VirtualSensor 中的context字段就是指向其对应的SensorContext的;
mBuffer字段表示存储事件的buffer,mRead指向当读取buffer的位置,mWrite指向向buffer写入事