文档首页 > > 开发指南> 功能组件> 传感框架> 开发指导

开发指导

分享
更新时间:2020/06/24 GMT+08:00

LiteOS传感框架是非常灵活方便的,可以运用在多种终端设备中,例如穿戴设备、智能家居设备、家用医疗设备等。

功能接口

Sensor Manager提供以下功能。

表1 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管理某一类别传感器典型流程如下:

  1. 创建任务、队列、信号量等资源SensorManagerInit。
  1. 初始化SensorType结构体变量,并注册传感器SensorRegister。
  1. 通过SensorTableGet获取传感器列表,执行已注册传感器的初始化动作。
  2. 根据需要配置传感器参数SensorConfigNotify。
  3. 初始化相同类别标签的传感器应用SensorItemInit,并提供应用Id和数据更新回调函数。
  4. 打开传感器应用SensorItemEnable,并提供应用采样周期,传感器驱动会根据打开参数的时间间隔创建软件定时器并启动,定时时间到达后则调用SensorSample通知Sensor Manager 读取数据,同时根据采样周期设置推送数据到该应用注册的回调函数。
  5. 关闭传感器应用SensorItemDisable,停止推送数据到该应用。

传感器消息处理、发送根据具体业务需求增加。

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!非常感谢您的反馈,我们会继续努力做到更好!
反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问