当前位置: 首页 > ai >正文

OpenHarmony SIM卡信号值整体流程分析

目录

1.Telephony架构

2.具体分析


1.Telephony架构

        本篇是来介绍OpenHarmony SIM卡信号值的整体分析流程,整体流程如下:

这里的分层流程参考:OpenAtom OpenHarmony

2.具体分析

可以看出来信号值先是从modem传递到vendorlib层,由于我们无法查看到modem的内容,我们直接来看硬件抽象层,分析下日志:

这里可以看出来是有vendorlib中at_support的日志打印,这里的日志可以看出来当前的信号值是-97,这块是的实现一般是厂商实现的,所以一般是闭源的,我这边的路径是在

./xxx/device/platform/soc/common/telephony/lib64/xxx.z.so 

里面,大家可以根据关键字搜索,一般应该都是在这下面

当然也有从vendor_report.c上传信号的,如上同理

然后回调用到at_network.c中的ProcessCurrentCellList函数,然后设置一个HNOTI_NETWORK_CURRENT_CELL_UPDATED通知

其实从架构图上面可以看出来at_network.c应该是在vendorlib中,所以应该是闭源的,闭源代码位置和上述所说的位置一致

然后继续看HNOTI_NETWORK_CURRENT_CELL_UPDATED通知,其实在hril_network.cpp中已经将HNOTI_NETWORK_CURRENT_CELL_UPDATED通知与NetworkCurrentCellUpdated_1_2函数绑定,如下:

可以看出来调用到NetworkCurrentCellUpdated_1_2函数中,此时我们其实已经来到了hril层,其实是中间层,这层代码就是开源的了

NetworkCurrentCellUpdated_1_2函数会调用到til_ril_network.cpp的NetworkCurrentCellUpdated_1_2函数中,此函数会发送一个RADIO_CURRENT_CELL_UPDATE通知cell部分进行更新

 最终会调用到network_search_handle.cpp中的RadioCurrentCellInfoUpdate函数,此函数会调用cell的ProcessCurrentCellInfo函数进行数据更新

然后到cell_info.cpp中的ProcessCurrentCellInfo函数,此函数如下:

会调用到 ProcessCurrentCell函数,此函数其实是根据当前不同的网络制式进行不同的函数调用,如下就是我们当前的sim卡是5g的并且我们也在设置中设置的是5g的网络制式的调用流程

会调用到ProcessCurrentCellNr函数

此函数就是将当前底层反馈上来的信号值赋值并且将信号值转成具体的信号等级,也就是我们状态栏看见的信号格,我们具体来看看 GetCurrentSignalLevelNr函数实现

其实是以倒序的方式进行判断,先从信号最强的阈值开始判断,上述我们知道rsrp的值为-97,其实此处的sigalBar_的值是5,然后NR_SIGNAL_THRESHOLD的值如下:

所以根据逻辑判断当前信号的值是满足最大值的要求的,所以信号格是5,中间步骤省略,其实最终这个信号值就是systemUI中通过getSignalInformation获取的信号值

http://www.xdnf.cn/news/7092.html

相关文章:

  • 本地部署代码托管解决方案 Gitea 并实现外部访问
  • 缓冲区的用途 和 fork复制进程
  • 深度解析:AWS NLB 与 ALB 在 EKS 集群中的最佳选择
  • 内容中台智能推荐系统构建与演进
  • Python 装饰器详解
  • 提示工程 - 系统提示(System Prompts)
  • AI日报 - 2025年05月19日
  • Fine-Tuning Llama2 with LoRA
  • STC89C52单片机模拟实现洗衣机控制 Proteus仿真
  • TYUT-企业级开发教程-第一章
  • Science Robotics 封面论文:基于形态学开放式参数化的仿人灵巧手设计用于具身操作
  • 如何完美安装GPU版本的torch、torchvision----解决torch安装慢 无法安装 需要翻墙安装 安装的是GPU版本但无法使用的GPU的错误
  • C++:⾯向对象的三⼤特性
  • Java正则表达式:从基础到高级应用全解析
  • ColorAid —— 一个面向设计师的色盲模拟工具开发记
  • 超越想象:利用MetaGPT打造高效的AI协作环境
  • Vue 3 中使用 md-editor-v3 的完整实例markdown文本
  • Pandas 构建并评价聚类模型② 第六章
  • 实现菜谱二级联动导航
  • ubuntu防火墙命令和放行ssh端口
  • 03 Nginx日志格式及可视化
  • Estimation(估算):业务分析师的“不确定性对抗术”
  • LeetCode Hot100刷题——除自身以外数组的乘积
  • 【设计模式】- 行为型模式2
  • 时序数据库、实时数据库与实时数仓:如何为实时数据场景选择最佳解决方案?
  • 【Linux】第十八章 调优系统性能
  • 结构体对齐三大法则
  • UART、SPI、IIC复习总结
  • 获取Class的方式有哪些?
  • 蓝桥杯19681 01背包