1 Star 0 Fork 5.1K

youguilin / docs

forked from OpenHarmony / docs 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
传感器驱动开发概述.md 23.48 KB
一键复制 编辑 原始数据 按行查看 历史
mamingshuai 提交于 2021-06-02 01:00 . update OpenHarmony 2.0 Canary

传感器驱动开发概述

简介

Sensor(传感器)驱动模块为上层Sensor服务系统提供稳定的Sensor基础能力API,包括Sensor列表查询、Sensor启停、Sensor订阅及去订阅,Sensor参数配置等功能;基于HDF(Hardware Driver Foundation)驱动框架开发的Sensor驱动模型,实现跨操作系统迁移,器件差异配置等功能。Sensor驱动模型如下图1所示:

图 1 Sensor驱动模型图

Sensor驱动模型对外开放的API接口能力如下:

  • 提供Sensor HDI(Hardware Driver Interface)能力接口,简化服务开发。
  • 提供Sensor驱动模型能力接口:依赖HDF驱动框架实现Sensor器件驱动的注册,加载,去注册,器件探测等能力,提供同一类型Sensor器件驱动归一接口, 寄存器配置解析操作接口,总线访问抽象接口,平台抽象接口。
  • 提供开发者实现的能力接口:依赖HDF驱动框架的HCS(HDF Configuration Source)配置管理,根据同类型Sensor差异化配置,实现Sensor器件参数序列化配置和器件部分操作接口,简化Sensor器件驱动开发。

接口说明

Sensor驱动模型对HDI开放的API接口功能,参考表1。

表 1 Sensor驱动模型对外API接口功能介绍

功能分类

接口名

功能描述

查询操作

int32_t GetAllSensors(struct SensorInformation **sensorInfo, int32_t *count)

获取系统中注册的所有传感器信息,一种类型传感器信息包括传感器名字、设备厂商、固件版本号、硬件版本号、传感器类型编号、传感器标识、最大量程、精度、功耗。

配置操作

int32_t Enable(int32_t sensorId)

使能一种传感器设备,只有数据订阅者使能传感器后,才能获取订阅的传感器数据。

int32_t Disable(int32_t sensorId)

去使能一种传感器设备。

int32_t SetBatch(iint32_t sensorId, int64_t samplingInterval, int64_t reportInterval)

设置一种传感器的数据采样间隔和数据上报间隔。

int32_t SetMode(int32_t sensorTypeId, SensorUser *user, int32_t mode)

设置一种传感器的工作模式,不同的工作模式,上报数据方式不同。

int32_t SetOption(int32_t sensorId, uint32_t option)

设置一种传感器量程,精度等可选配置。

数据订阅操作

int32_t Register(RecordDataCallback cb)

订阅者注册传感器数据回调函数,系统会将获取到的传感器数据上报给订阅者。

int32_t Unregister(void)

订阅者去注册传感器数据回调函数。

接口实例

const struct SensorInterface *NewSensorInterfaceInstance(void)

创建传感器接口实例。

int32_t FreeSensorInterfaceInstance(void)

释放传感器接口实例。

Sensor驱动模型对驱动开发者开放的功能接口,驱动开发者无需实现,直接使用,参考表2:

表 2 Sensor驱动模型对驱动开发者开放的功能接口列表

功能分类

接口名

功能描述

设备管理操作接口

int32_t AddSensorDevice(const struct SensorDeviceInfo *deviceInfo)

添加当前类型的传感器设备到传感器设备管理。

int32_t DeleteSensorDevice(int32_t sensorId)

删除传感器设备管理里指定的传感器设备。

int32_t ReportSensorEvent(const struct SensorReportEvent *events)

上报指定类型传感器的数据到用户侧。

Sensor抽象总线和平台操作接口

int32_t ReadSensor(struct SensorBusCfg *busCfg, uint16_t regAddr, uint8_t *data, uint16_t dataLen)

按照配置的总线方式,读取传感器寄存器配置数据。

int32_t WriteSensor(struct SensorBusCfg *busCfg, uint8_t *writeData, uint16_t len)

按照配置的总线方式,传感器配置数据写入寄存器。

int32_t CreateSensorThread(struct OsalThread *thread, OsalThreadEntry threadEntry, char *name, void *entryPara)

创建指定传感器的定时线程,用于传感器数据上报处理。

void DestroySensorThread(struct OsalThread *thread, uint8_t *status);

销毁传感器创建的定时线程。

通用配置操作接口

int32_t SetSensorRegCfgArray(struct SensorBusCfg *busCfg, const struct SensorRegCfgGroupNode *group);

根据传感器总线类型信息,下发寄存器分组配置。

配置解析操作接口

int32_t GetSensorBaseConfigData(const struct DeviceResourceNode *node, struct SensorCfgData *config)

根据传感器设备HCS资源配置,获取传感器信息,总线配置信息,属性配置等基本配置信息,并初始化对应的基本配置数据结构体。

int32_t ParseSensorRegConfig(struct SensorCfgData *config)

根据传感器设备HCS资源配置,解析寄存器分组信息,并初始化配置数据结构体。

void ReleaseSensorAllRegConfig(struct SensorCfgData *config)

释放传感器配置数据结构体里分配的资源。

int32_t GetSensorBusHandle(struct SensorBusCfg *busCfg)

获取传感器总线句柄信息。

int32_t ReleaseSensorBusHandle(struct SensorBusCfg *busCfg)

释放传感器句柄信息。

Sensor驱动模型要求驱动开发者实现的接口功能,参考表3

表 3 Sensor驱动模型要求驱动开发者实现的接口列表

功能分类

接口名

功能描述

基本功能操作

int32_t init(void)

传感器器设备探测成功后,需要对传感器器设备初始化配置。

int32_t GetInfo(struct SensorBasicInfo *info)

从传感器器设备的HCS配置里,获取当前传感器设备的基本信息。

int32_t Enable(void)

根据当前传感器器设备的HCS配置,下发传感器设备使能操作组的寄存器配置。

int32_t Disable(void)

根据当前传感器器设备的HCS配置,下发传感器设备去使能操作组的寄存器配置。

int32_t SetBatch(int64_t samplingInterval, int64_t reportInterval)

根据数据采样率和数据上报间隔,配置当前传感器设备的数据上报线程处理时间。

int32_t SetMode(int32_t mode)

配置当前传感器设备数据上报方式。

int32_t SetOption(uint32_t option)

根据可选配置,下发量程,精度等寄存器配置。

void ReadSensorData(void)

实现传感器的数据读取函数。

接口实现参考SENSOR章节。

1
https://gitee.com/yougl/docs.git
git@gitee.com:yougl/docs.git
yougl
docs
docs
master

搜索帮助