OpenHarmony Sensor 模块Callback注册和回调全流程

Posted 一日丧命散

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenHarmony Sensor 模块Callback注册和回调全流程相关的知识,希望对你有一定的参考价值。

​service启动阶段的回调注册流程

service 启动:​

OpenHarmony

注册Service的回调函数 ZReportDataCallback()到Impl实现类中

OpenHarmony

注册实现类Impl的回调函数SensorDataCallback()到驱动层

OpenHarmony

OpenHarmony

驱动层代码:

OpenHarmony

OpenHarmony


On()订阅流程中,应用从JS到Clent端的回调注册流程

OpenHarmony

细节图:

OpenHarmony

OpenHarmony

OpenHarmony


从上面client端的回调注册, 和 service端的回调注册都分别实现。

只需要将service 和 client 串联起来即可。

service 是如何触发 client端的回调的?

OpenHarmony

答案是通过socket发送消息。触发listener的OnReadable()

在client端有个线程负责receive socket消息,

在service端有个线程负责send socket消息。

平时,service端的发送线程是处于阻塞状态。 当驱动触发了service的回调函数SensorServiceImpl::SensorDataCallback()时,SensorServiceImpl::SensorDataCallback()又会回调上一层的回调函数ZReportDataCallback()。

下面的图时注册过程,回调过程需要将箭头反向看即可。

OpenHarmony

SensorServiceImpl::SensorDataCallback()的实现:

OpenHarmony

消息发送线程:

OpenHarmony

经过多层调用:

OpenHarmony

当client端监听到有消息过来,就触发OnReadable。

OpenHarmony

接者反向往上回调,就完成了从驱动,到service,到client,到Js层的回调了。

驱动---回调方式--->service---socket方式--->client----回调方式--->JS


以上是关于OpenHarmony Sensor 模块Callback注册和回调全流程的主要内容,如果未能解决你的问题,请参考以下文章

OpenHarmony 通俗易懂讲解Sensor订阅流程

OpenHarmony南向之旅之HDF传感器驱动开发

[openharmony]liteos-a编译过程分析

OpenHarmony如何拨打电话

OpenHarmony如何拨打电话

OpenHarmony如何拨打电话