一:简介

高通从SDM845平台开始,Sensor使用新的架构SEE(Sensors Execution Environment),和之前架构不同,新的架构有着太多的优点。

首先,先对比下新架构和旧架构的不同。

图1

从上图可以看到,新架构简化太多,SEE充当了Core层的重要角色。负责传送request,接收event。

下面,了解下SEE和旧框架的对比。

图2

接着,我们看下Sensor之间数据如何传输。

先看下see中各部分的定义。

图3

图4

说明:

1. 所有包含 to,from和sensors之间的传输都是通过request和event 消息来完成的。其中,(1)消息被定义成Protocol buffer的格式,通过nano PB generator,encoder和decoder来完成编解码生成Protocol buffer格式的数据。(2)buffer的长度,message ID,和时间戳等等通过SEE框架中metadata来进行传输。
2. Request消息被编码成data stream用来enable、disable或者configure。其中,(1)Request消息会使用一个特定的SUID。(2)一但目标sensor接收到Request消息,它会发送该request给sensor instance来进行相应的处理。(sensor instance表示着每个sensor的实例化,后面会进一步分析)。
3. Event消息被sensor instances 异步发送的它们注册的client中。client即完成接收数据。

接下来,我们要看下sensor和sensor instance。

1. Sensor & instance

(1) Sensor 用来产生 和/或 消费 异步数据。
(2) 每个sensor可实例化一次或多次sensor instances。其中:每个instance使用特殊配置来操作;发给sensor的任何request都会生成一个sensor instance 或者共享已经存在的instance。
(3) sensor instances 是请求式的创建,由sensor来终结。其中:sensors完全掌控他们匹配的instances的生命周期和配置信息,并且负责发送配置更新和初始状态events给他们的clients;Vendors强烈建议所有的clients提供及可能少的实例;stream data通过一个instance产生,并发送给所有激活的clients。
(4)一个单独的sensor instance 可以通过多个sensor来共享和配置。

2. 物理sensor 驱动的主要工作。

Sensor:
(1)在初始化期间查找sensor硬件,并在硬件当前可用的情况publishes availability。
(2)publishes所有相关带有正常参数的attributes;
(3)获取所属的SUID。
(4)获取配置信息并从registry中获取calibration的数据。
(5)管理来自client的requests;
(6)当request进入时,根据不同信息来建立/更新/删除 instances。
(7)管理sensor硬件的用电;
(8)管理COM bus的用电;
(9)在析构过程中释放所有资源。

Instance:
(1)管理COM bus用电,
(2)根据request编程符合自身硬件的code。
(3)当硬件配置改变时Publishes 配置event。
(4)Publishes data event。
(5)Publishes 所有错误的events。
(6) 在析构过程中释放所有资源。

Protocol Buffer 和 Nanopb

Google Protocol buffer是一种可以用在不同语言和平台上序列化数据结构字节流的数据格式。
数据结构信息定义在一个以.proto为后缀的文件中。
.proto后缀的文件可以通过编程的方式将一个Protocol buffer编译生成数据结构(data structures)。
可以通过 https://developers.google.com/protocol-buffers/ 来获取更详细的介绍。

Nanopb是一种用c语言实现google Protocol buffers的工具。详细介绍可以访问:https://jpa.kapsi.fi/nanopb/

高通官网也有对应的855 sensor over 文档

高通SDM855平台Sensor学习——1.框架相关推荐

  1. 高通SDM845平台Sensor学习——1.框架

    一:简介 高通从SDM845平台开始,Sensor使用新的架构SEE(Sensors Execution Environment),和之前架构不同,新的架构有着太多的优点. 首先,先对比下新架构和旧架 ...

  2. 高通SDM845平台Sensor学习——3.SLPI(Physical Sensor)

    ####三:Sensor SLPI层代码分析 #### 在学习SLPI侧代码前我们先了解下SEE的registry&config. registry 放在/persist/sensors/re ...

  3. 高通SDM845平台Sensor学习——2.Hal层

    二:Sensor Hal层代码分析 Hal code放在/vendor/qcom/proprietary/sensors-see/中 sensors-hal文件夹中包含framework和sensor ...

  4. 高通SDM845平台Sensor学习——2.Hal层--

    二:Sensor Hal层代码分析 Hal code放在/vendor/qcom/proprietary/sensors-see/中 sensors-hal文件夹中包含framework和sensor ...

  5. 高通SDM845平台Sensor学习——4.SLPI(SAM Sensor)

    四:Sensor SLPI层SAM Sensor实例分析 上文中,我们大致了解了物理sensor driver整个流程,但在项目中,一般写这种sensor driver的情况很少.这种sensor d ...

  6. 高通SDM845平台Sensor学习——4.SLPI(SAM Sensor)--

    四:Sensor SLPI层SAM Sensor实例分析 上文中,我们大致了解了物理sensor driver整个流程,但在项目中,一般写这种sensor driver的情况很少.这种sensor d ...

  7. 【高通SDM660平台 Android 10.0】(10) --- Camera Sensor lib 与 Kernel Camera Probe 代码分析

    [高通SDM660平台 Android 10.0]Camera Sensor lib 与 Kernel Camera Probe 代码分析 一.libmmcamera_imx258.so 代码分析 1 ...

  8. Android O Treble框架笔记(基于高通845平台)

    Android O Treble框架笔记(基于高通845平台) tags: android 文章目录 Android O Treble框架笔记(基于高通845平台) @[toc] **0 前言** * ...

  9. Android O 的camera framework-hal层框架笔记(基于高通845平台)

    Android O 的camera framework/hal层框架笔记(基于高通845平台) tags: android camera 文章目录 Android O 的camera framewor ...

最新文章

  1. 计算机视觉、机器学习相关领域论文和源代码大集合
  2. pycharm 怎么对代码进行性能分析,消耗时间time (Run -- Profile 'xxxx')
  3. pacemaker集群管理相关命令
  4. 它们的定义Activity跳转动画
  5. Hibernate的批量操作
  6. mysql 报表统计sql使用实例_mysql 案例~mysql元数据的sql统计
  7. 再见收费的Navicat!操作所有数据库靠它就够了!
  8. javascript 编译与执行过程
  9. 【10天基于STM32F401RET6智能锁项目实战第2天】用按键点灯----GPIO的输入和输出
  10. html和css页面自动缩小和放大,如何使用CSS和Javascript来缩小HTML?
  11. 在ASP中常见的错误80004005信息和解决办法
  12. golang ide 下载
  13. CreatePipe 函数
  14. Ansys 错误记录
  15. 苹果系列产品如何保修-Apple官方回复
  16. 360视频:金字塔棱台投影TSP
  17. ds5100更换电池 ibm_IBM DS5000系列更换电池
  18. 立夏游雪上,赏奇花,正当时:天台九遮山
  19. linux禁止root用户su,Linux 禁止普通用户su到root
  20. 【FLink】Assigned key must not be null

热门文章

  1. 愚人节,360搜索和搜狗提前发动愚人攻略
  2. web前端开发在微博/帖子/评论/博客等所用的几种常用编辑器
  3. TensorFlow官方教程《Neural Networks and Deep Learning》译(第二章)
  4. 集成平台,API混合集成中台
  5. 07寄语:写在我26岁的生日的祝福和愿望
  6. linux获取命令的返回值,Shell $?:获取函数返回值或者上一个命令的退出状态
  7. python中argv的使用_python中使用sys.argv命令行参数
  8. html 跳转后关闭当前页面,js实现3秒后关闭当前页面
  9. C语言重来28:如何离开多重循环
  10. 基于K8s和docker的Jenkins 可伸缩持续集成系统