开发指导
使用场景
Huawei LiteOS传感框架非常灵活方便,可以运用在多种终端设备中,例如穿戴设备、智能家居设备、家用医疗设备等。
功能
Sensor Manager提供以下功能。
功能分类 |
接口名 |
描述 |
---|---|---|
传感器管理初始化 |
SensorManagerInit |
创建Sensor Manager任务、队列、信号量等传感器管理所需资源 |
传感器注册 |
SensorRegister |
注册对应标签传感器对象 |
传感器配置 |
SensorConfigNotify |
通知Sensor Manager配置传感器参数 |
传感器采样 |
SensorSample |
传感器数据采样 |
获取传感器列表 |
SensorTableGet |
获取传感器列表 |
传感器应用 |
SensorItemInit |
初始化对应标签传感器应用,注册应用数据更新回调 |
SensorItemEnable |
打开传感器应用 |
|
SensorItemDisable |
关闭传感器应用 |
|
传感器消息 |
SensorMessageProcess |
处理从外部模块发来的传感器消息 |
SensorCommuSend |
发送传感器消息到外部模块,由实际应用实现相关代码 |
数据结构
SensorType结构体:
typedef struct { struct LOS_DL_LIST list; struct LOS_DL_LIST slist; // 相同类别标签的应用会挂在该链表下面 struct LOS_DL_LIST attachedApp; struct DeviceType *attachDevice; struct LOS_DL_LIST slaveList; struct SensorOperation *sensorOp; // Init、Open、Close、IoCtl等操作 OpenParam openParam; CloseParam closeParam; VOID *sensorData; // 采样数据指针 UINT32 slaveAddr; UINT32 interval; // 软件定时器间隔,单位是tick INT32 count; UINT32 sensorMuxLock; // 多个应用操作时需获取sensor锁,避免冲突 VOID *priv; // 私有变量指针 PrivResponse privResp; SensorItem commuItem; UINT8 sensorDataLen; // 采样数据长度 UINT8 tag; // 类别标签 UINT8 cmd; UINT8 sensorStat; } SensorType;
SensorItem结构体:
typedef struct { struct LOS_DL_LIST list; OpenParam openParam; // 打开参数 CloseParam closeParam; // 关闭参数 RespFunc respFunc; // 应答回调 UpdateFunc updateFunc; // 数据更新回调 UINT32 updateArg; // 数据更新回调入参 UINT32 updateTime; // 数据更新时间,即应用采集周期 UINT32 updateCnt; ObjTag tag; SensorItemState state; // 应用状态 UINT16 id; // 应用Id UINT8 resp; // 0 不回复, 1 回复 UINT8 reserverd; } SensorItem;
开发流程
使用Sensor Manager管理某一类别传感器典型流程如下:
- 通过make menuconfig配置传感框架,菜单路径为:Components ---> Sensorhub。
配置项
含义
取值范围
默认值
依赖
LOSCFG_COMPONENTS_SENSORHUB
传感框架的裁剪开关
YES/NO
NO
无
- 创建任务、队列、信号量等资源SensorManagerInit。
- 初始化SensorType结构体变量,并注册传感器SensorRegister。
- 通过SensorTableGet获取传感器列表,执行已注册传感器的初始化动作。
- 根据需要配置传感器参数SensorConfigNotify。
- 初始化相同类别标签的传感器应用SensorItemInit,并提供应用Id和数据更新回调函数。
- 打开传感器应用SensorItemEnable,并提供应用采样周期,传感器驱动会根据打开参数的时间间隔创建软件定时器并启动,定时时间到达后则调用SensorSample通知Sensor Manager 读取数据,同时根据采样周期设置推送数据到该应用注册的回调函数。
- 关闭传感器应用SensorItemDisable,停止推送数据到该应用。
传感器消息处理、发送根据具体业务需求增加。